111,116
社区成员
发帖
与我相关
我的任务
分享public partial class Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string path = @"E:\XMLFile1.xml";
string txt = string.Empty;
using (StreamReader sr = new StreamReader(path))
{
txt = sr.ReadToEnd();
}
}
public static XmlDs GetDeserializeObject(string xmlModel)
{
byte[] array = Encoding.UTF8.GetBytes(xmlModel);
XmlSerializer serializer = new XmlSerializer(typeof(XmlDs));
Stream stream = new MemoryStream(array);
object obj = serializer.Deserialize(stream);
return obj != null ? obj as XmlDs : null;
}
public static string GetSerializer<T>(T t)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
Stream stream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(stream, Encoding.UTF8);
serializer.Serialize(xmlWriter, t);
stream.Position = 0;
StreamReader r = new StreamReader(stream);
return r.ReadToEnd();
}
}
[XmlRoot("XmlDs")]
public class XmlDs
{
private List<XMLTable> _xMLTableList;
[XmlElement("XMLTable")]
public List<XMLTable> XMLTableList
{
get { return _xMLTableList; }
set { _xMLTableList = value; }
}
}
[XmlRoot("XMLTable")]
public class XMLTable
{
private string _iNVOICENO;
[XmlElement()]
public string INVOICENO
{
get { return _iNVOICENO; }
set { _iNVOICENO = value; }
}
private string _iNVOICEDATE;
[XmlElement()]
public string INVOICEDATE
{
get { return _iNVOICEDATE; }
set { _iNVOICEDATE = value; }
}
private string _iNBILLNO;
[XmlElement()]
public string INBILLNO
{
get { return _iNBILLNO; }
set { _iNBILLNO = value; }
}
private string _iNBILLSEQ;
[XmlElement()]
public string INBILLSEQ
{
get { return _iNBILLSEQ; }
set { _iNBILLSEQ = value; }
}
private string _hOSDEPTCODE;
[XmlElement()]
public string HOSDEPTCODE
{
get { return _hOSDEPTCODE; }
set { _hOSDEPTCODE = value; }
}
private string _dEALHOSCODE;
[XmlElement()]
public string DEALHOSCODE
{
get { return _dEALHOSCODE; }
set { _dEALHOSCODE = value; }
}
private string _dEALHOSNAME;
[XmlElement()]
public string DEALHOSNAME
{
get { return _dEALHOSNAME; }
set { _dEALHOSNAME = value; }
}
private string _gOODS;
[XmlElement()]
public string GOODS
{
get { return _gOODS; }
set { _gOODS = value; }
}
private string _nAME;
[XmlElement()]
public string NAME
{
get { return _nAME; }
set { _nAME = value; }
}
private string _sPEC;
[XmlElement()]
public string SPEC
{
get { return _sPEC; }
set { _sPEC = value; }
}
private string _pRODUCER;
[XmlElement()]
public string PRODUCER
{
get { return _pRODUCER; }
set { _pRODUCER = value; }
}
private string _mSUNITNO;
[XmlElement()]
public string MSUNITNO
{
get { return _mSUNITNO; }
set { _mSUNITNO = value; }
}
private string _dBILLQTY;
[XmlElement()]
public string DBILLQTY
{
get { return _dBILLQTY; }
set { _dBILLQTY = value; }
}
private string _eNDDATE;
[XmlElement()]
public string ENDDATE
{
get { return _eNDDATE; }
set { _eNDDATE = value; }
}
private string _tRDPRC;
[XmlElement()]
public string TRDPRC
{
get { return _tRDPRC; }
set { _tRDPRC = value; }
}
private string _dPRC;
[XmlElement()]
public string DPRC
{
get { return _dPRC; }
set { _dPRC = value; }
}
private string _rTLPRC;
[XmlElement()]
public string RTLPRC
{
get { return _rTLPRC; }
set { _rTLPRC = value; }
}
private string _lOTNO;
[XmlElement()]
public string LOTNO
{
get { return _lOTNO; }
set { _lOTNO = value; }
}
private string _pRDDATE;
[XmlElement()]
public string PRDDATE
{
get { return _pRDDATE; }
set { _pRDDATE = value; }
}
private string _dSUMVALUE;
[XmlElement()]
public string DSUMVALUE
{
get { return _dSUMVALUE; }
set { _dSUMVALUE = value; }
}
private string _bILLNO;
[XmlElement()]
public string BILLNO
{
get { return _bILLNO; }
set { _bILLNO = value; }
}
}
[System.Xml.Serialization.XmlElement("myc",Order = 1)]
public DDD myc;
public void setDDD()
{
myc = new DDD();
}
[System.Xml.Serialization.XmlElement("myc1", Order = 2)]
public DDD myc1;
public void setDDD1()
{
myc1 = new DDD();
}
/// <summary>
/// 读取文件参数,成员为元素类型、元素路径
/// </summary>
public struct DataReader
{
/// <summary>
/// 目的类型
/// </summary>
public DataType readerType;
/// <summary>
/// 元素名
/// </summary>
public List<string> dataNameList;
/// <summary>
/// 元素值,比元素名数据数量少一个
/// </summary>
public List<string> dataValueList;
}
/// <summary>
/// 设置搜索方法的使用控制参数
/// </summary>
/// <param name="xmlDoc"></param>
/// <param name="readerPara"></param>
/// <param name="nodelist"></param>
/// <param name="Valuecount"></param>
/// <param name="ValueTotel"></param>
/// <param name="Namecount"></param>
/// <param name="NameTotel"></param>
/// <returns></returns>
private bool SetSearchData(XmlDocument xmlDoc, DataReader readerPara, ref List<XmlNode> Resultlist, ref int Valuecount, ref int ValueTotel, ref int Namecount, ref int NameTotel)
{
XmlNodeList nodelist;
if (readerPara.dataNameList == null || readerPara.dataNameList.Count <= 0)
{
nodelist = xmlDoc.ChildNodes;
Namecount = -1;
}
else
{
NameTotel = readerPara.dataNameList.Count;
nodelist = xmlDoc.GetElementsByTagName(readerPara.dataNameList[0]);
}
if (nodelist.Count == 0)
{
Resultlist = null;
return false;
}
if (readerPara.dataValueList != null && readerPara.dataValueList.Count > 0)
{
ValueTotel = readerPara.dataValueList.Count;
}
else
{
Valuecount = -1;
}
foreach (XmlNode node in nodelist)
{
Resultlist.Add(node);
}
return true;
}
/// <summary>
/// 模糊搜索 name和Value可以不对应,将搜索name和Value中最详细的节点数据
/// </summary>
/// <param name="readerPara"></param>
/// <param name="obj"></param>
public string ReadBlurNode(DataReader readerPara, out object obj)
{
obj = null;
List<string> myResult = new List<string>();
string strResult = string.Empty;
if (readerPara.dataNameList == null && readerPara.dataValueList == null)
{
MsgError(MsgErrorType.READPARAALLNULL,null);
return strResult;
}
xmlDoc = new XmlDocument();
bool bValid = BindValidation(ref xmlDoc);
if (bValid == false)
{
//验证失败
}
//xmlDoc.Load((myXMLFile);
int Valuecount = 0;
int ValueTotel = 0;
int Namecount = 0;
int NameTotel = 0;
List<XmlNode> Resultlist = new List<XmlNode>();
bool bSetData = SetSearchData(xmlDoc, readerPara, ref Resultlist, ref Valuecount, ref ValueTotel, ref Namecount, ref NameTotel);
if (bSetData == false)
{
return strResult;
}
while (true)
{
//搜索与值链表中值相同的元素值
if(SearchValueInList(readerPara, Resultlist,ref strResult,ref myResult, ref Valuecount, ValueTotel, ref Namecount)==true)
{
break;//在Namelist搜索完成后ValueList也搜索完成
}
//如果找不到与值链表中值相同的元素值,则查找元素名
if(SearchNameInList(readerPara, Resultlist, ref strResult, ref myResult, ref Valuecount, NameTotel, ref Namecount)==false)
{
break;//在ValueList搜索完成后Namelist也搜索完成
}
//如果找不到与值链表中值相同的元素值和名,则搜索子节点
GetChildList(ref Resultlist);
if (Resultlist == null)
{
return strResult;
}
}
//GetElementsByTagName(readerPara.dataNameList[readerPara.dataNameList.Count - 1]);
obj = (object)myResult;
return strResult;
}
<?xml version="1.0" encoding="UTF-8"?>
<XmlDs>
<XMLTable>
<INVOICENO>10112052400742</INVOICENO>
<INVOICEDATE>2012-05-24</INVOICEDATE>
<INBILLNO>0</INBILLNO>
<INBILLSEQ>0</INBILLSEQ>
<HOSDEPTCODE>DEPT000530</HOSDEPTCODE>
<DEALHOSCODE>YPLY000156</DEALHOSCODE>
<DEALHOSNAME>国药控股股份有限公司(新特药)</DEALHOSNAME>
<GOODS>6543</GOODS>
<NAME>(农)甲硝唑氯化钠注射液</NAME>
<SPEC>100ml</SPEC>
<PRODUCER>石家庄四药有限公司</PRODUCER>
<MSUNITNO>瓶</MSUNITNO>
<DBILLQTY>40</DBILLQTY>
<ENDDATE>2014-02-24</ENDDATE>
<TRDPRC>2.80</TRDPRC>
<DPRC>1.95</DPRC>
<RTLPRC>3.20</RTLPRC>
<LOTNO>120225167</LOTNO>
<PRDDATE>2012-02-25</PRDDATE>
<DSUMVALUE>78</DSUMVALUE>
<BILLNO>10112052400742</BILLNO>
</XMLTable>
<XMLTable>
<INVOICENO>10112052400895</INVOICENO>
<INVOICEDATE>2012-05-24</INVOICEDATE>
<INBILLNO>0</INBILLNO>
<INBILLSEQ>0</INBILLSEQ>
<HOSDEPTCODE>DEPT000530</HOSDEPTCODE>
<DEALHOSCODE>YPLY000156</DEALHOSCODE>
<DEALHOSNAME>国药控股股份有限公司(新特药)</DEALHOSNAME>
<GOODS>527364</GOODS>
<NAME>(农)(亚莫利)格列美脲片</NAME>
<SPEC>2mg*15</SPEC>
<PRODUCER>赛诺菲安万特(北京)制药有限公司</PRODUCER>
<MSUNITNO>盒</MSUNITNO>
<DBILLQTY>240</DBILLQTY>
<ENDDATE>2015-03-31</ENDDATE>
<TRDPRC>67.74</TRDPRC>
<DPRC>67.74</DPRC>
<RTLPRC>77.90</RTLPRC>
<LOTNO>B2022</LOTNO>
<PRDDATE>2012-04-01</PRDDATE>
<DSUMVALUE>16257.60</DSUMVALUE>
<BILLNO>10112052400895</BILLNO>
</XMLTable>
<XMLTable>
<INVOICENO>10112052400896</INVOICENO>
<INVOICEDATE>2012-05-24</INVOICEDATE>
<INBILLNO>0</INBILLNO>
<INBILLSEQ>0</INBILLSEQ>
<HOSDEPTCODE>DEPT000530</HOSDEPTCODE>
<DEALHOSCODE>YPLY000156</DEALHOSCODE>
<DEALHOSNAME>国药控股股份有限公司(新特药)</DEALHOSNAME>
<GOODS>530448</GOODS>
<NAME>(农)维生素C注射液</NAME>
<SPEC>1g:5ml*5支</SPEC>
<PRODUCER>上海现代哈森(商丘)药业有限公司</PRODUCER>
<MSUNITNO>盒</MSUNITNO>
<DBILLQTY>20</DBILLQTY>
<ENDDATE>2013-04-30</ENDDATE>
<TRDPRC>2.30</TRDPRC>
<DPRC>2.07</DPRC>
<RTLPRC>2.70</RTLPRC>
<LOTNO>11111722</LOTNO>
<PRDDATE>2011-11-17</PRDDATE>
<DSUMVALUE>41.40</DSUMVALUE>
<BILLNO>10112052400896</BILLNO>
</XMLTable>
</XmlDs>