C# 使用XPathNavigator循环浏览XML文档
我有下面的XML,我正在尝试将值写入CSV文件。然而,我不知道如何进一步进行,因为我已经尝试过抛出错误。下面返回:“表达式必须计算为节点集”。感谢您的帮助 XML:C# 使用XPathNavigator循环浏览XML文档,c#,.net,xml,xpath,C#,.net,Xml,Xpath,我有下面的XML,我正在尝试将值写入CSV文件。然而,我不知道如何进一步进行,因为我已经尝试过抛出错误。下面返回:“表达式必须计算为节点集”。感谢您的帮助 XML: 更改导航中的XPathNavigator节点。选择(“/Envelope/Body/RESULT/”)到导航中的XPathNavigator节点。选择(“/Envelope/Body/RESULT/Mailing”),然后使用例如字符串MailingId=node。选择SingleNode(“MailingId”)。值好的,您可以尝
更改导航中的XPathNavigator节点。选择(“/Envelope/Body/RESULT/”)到导航中的XPathNavigator节点。选择(“/Envelope/Body/RESULT/Mailing”),然后使用例如
字符串MailingId=node。选择SingleNode(“MailingId”)。值代码>好的,您可以尝试以下方法:
foreach (XPathNavigator node in nav.Select("/Envelope/Body/RESULT/Mailing"))
{
string MailingId = node.SelectSingleNode("./MailingId").Value;
// and so on
注意:它应该和你的查询一样是邮寄
而不是结果
,并且应该不以/
结束,所有我尝试抛出的错误
谢谢。它起作用了!顺便说一句,“/MailingId”和使用“MailingId”有什么区别?@stats101事实上,在这种特殊情况下没有区别。前缀/
在xpath中表示“相对地从当前节点开始选择”。
xpathDoc = HttpHelper.HttpStream(xmlReq, sessionid);
XPathNavigator nav = xpathDoc.CreateNavigator();
XPathNodeIterator xmlIterator = nav.Select("/Envelope/Body/RESULT/");
var csv = new StringBuilder();
filePath = "C:\Campaigns.csv";
foreach (XPathNavigator node in xmlIterator)
{
string MailingId = node.SelectSingleNode("MailingId").Value;
string ReportId = node.SelectSingleNode("ReportId").Value;
string ScheduledTS = node.SelectSingleNode("ScheduledTS").Value;
string MailingName = node.SelectSingleNode("MailingName").Value;
string newLine = string.Format("{0},{1},{2},{3},{4}", MailingId, ReportId, ScheduledTS, MailingName, Environment.NewLine);
csv.Append(newLine);
}
File.WriteAllText(filePath, csv.ToString());
foreach (XPathNavigator node in nav.Select("/Envelope/Body/RESULT/Mailing"))
{
string MailingId = node.SelectSingleNode("./MailingId").Value;
// and so on