我在 C# 中使用 ASP.net 编码。我正在尝试读取一个 XML 文件,然后检查两个子节点以确保它们符合标准。如果是这样,那么我将尝试返回属于同一父节点的其他子节点的文本。
示例 XML:
<JobList>
<Job>
<JobTitle>Job 1</JobTitle>
<ReqId>1234</ReqId>
<filter1>
<label>location</label>
<value>texas</value>
</filter1>
<filter2>
<label>type</label>
<value>admin</value>
</filter2>
</Job>
</JobList>
我希望数据列表在 filter1/value = texas 和 filter2/value = admin 时显示 JobTitle 和 ReqId。我可以使用下面的代码编写位置列表,但我无法确定如何在 2 个条件下进行选择,然后使用该匹配项的父项来获取另一个子项以提供给数据列表。这是我的最新版本:
XPathNavigator nav;
XPathDocument docNav;
XPathNodeIterator NodeIter;
String xmlpath = "test.xml";
docNav = new XPathDocument(xmlpath);
nav = docNav.CreateNavigator();
NodeIter = nav.Select("/JobList/Job/filter1/value[contains(.,'texas')]");
StreamWriter stw = File.AppendText("C:\\test.txt");
while (NodeIter.MoveNext())
{
NodeIter.Current.MoveToParent();
//NodeIter.Current.MoveToParent();
NodeIter.Current.MoveToChild("JobTitle",xmlpath);
stw.WriteLine("Job Title: {0}", NodeIter.Current.Value);
};
stw.Close();
我已经尝试过了,但它不起作用:
NodeIter = nav.Select("(/Job-Listing/Job/filter1/value[contains(.,'texas')]) and (/Job-Listing/Job/filter3/value[contains(.,'admin')])");
谢谢你的时间