我有一个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 Message及其子内部文本值,并将每个节点作为excel表列名称,并将值作为excel中的行值。 错误如下
答案 0 :(得分:1)
您可以这样做,解决方案使用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