如何获得C#中的XML文档的内部节点及其子值?
我有一个像下面的XML文件
<?xml version='1.0'?> <ENVELOPE> <HEADER> <TALLYREQUEST>Import Data</TALLYREQUEST> </HEADER> <BODY> <IMPORTDATA> <REQUESTDESC><REPORTNAME>All Masters</REPORTNAME><STATICVARIABLES><SVCURRENTCOMPANY>MSIT</SVCURRENTCOMPANY></STATICVARIABLES></REQUESTDESC> <REQUESTDATA> <TALLYMESSAGE> <Entry_x0020_NO.>125</Entry_x0020_NO.> <DATE>12</DATE> <GUID>1258</GUID> <NARRATION>1542</NARRATION> <VOTURETYPENAME>456</VOTURETYPENAME> <NAME>achuth</NAME> <AMOUNT>250</AMOUNT> </TALLYMESSAGE> </REQUESTDATA> </IMPORTDATA> </BODY> </ENVELOPE>
其中我需要使用循环中的c#代码获取内部节点tally消息及其子内部文本值,并将每个节点作为excel表单列名称和值作为excel中的行值。 错误在下面
你可以这样做,解决scheme使用Linq
到Xml
。
XDocument doc = XDocument.Load(filename); var messages = doc.Descendants("TALLYMESSAGE").Select(s=> new { Entry = s.Element("Entry_x0020_NO.").Value, DATE = s.Element("DATE").Value, GUID = s.Element("GUID").Value, NARRATION = s.Element("NARRATION").Value, VOTURETYPENAME = s.Element("VOTURETYPENAME").Value, AMOUNT = s.Element("AMOUNT").Value, NAME = s.Element("NAME").Value, }).ToList();
更新:如在评论中问,如果你正在寻找循环通过每个元素,你可以做到这一点。
foreach(var element in doc.Descendants("TALLYMESSAGE").Elements()) { Console.WriteLine("{0} = {1}", element.Name, element.Value); }
检查这个Example