C# 解析XML文件以检查2个子节点,然后将第3个节点返回到datalist
我正在使用C中的ASP.net编码。我正在尝试读取XML文件,然后检查其中两个子节点,以确保它们符合条件。如果是这样,那么我将尝试返回属于同一父节点的其他子节点的文本 示例XML:C# 解析XML文件以检查2个子节点,然后将第3个节点返回到datalist,c#,asp.net,xml,xpath,C#,Asp.net,Xml,Xpath,我正在使用C中的ASP.net编码。我正在尝试读取XML文件,然后检查其中两个子节点,以确保它们符合条件。如果是这样,那么我将尝试返回属于同一父节点的其他子节点的文本 示例XML: <JobList> <Job> <JobTitle>Job 1</JobTitle> <ReqId>1234</ReqId> <filter1> <
<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>
我尝试过这个,但它不起作用:
NodeIter = nav.Select("(/Job-Listing/Job/filter1/value[contains(.,'texas')]) and (/Job-Listing/Job/filter3/value[contains(.,'admin')])");
感谢您抽出时间扔掉旧的xml解析器 使用LINQ2XML。它既简单又酷
XElement doc=XElement.Load("yourXml.xml");
var lst=doc.Elements("Job")
.Where(x=>x.Element("filter1").Element("value").Value=="texas" &&
x.Element("filter2").Element("value").Value=="admin")
.Select(y=>
new
{
title=y.Element("JobTitle").Value,
id=y.Element("ReqId").Value
})
.ToList();
现在可以在lst上迭代
foreach(var l in lst)
{
l.title;
l.id;
}
谢谢你的回复。我尝试实现Linq,但您的代码在where行上给了我一个错误:只能将赋值、调用、递增、递减、等待和新对象表达式用作语句。为什么不简单地将subjects.ElementsJob更改为elementsjobals呢?这样做不会按原样工作,因为where的x是Select中的新对象。将Where移到Select语句上方,以访问作业元素。修正了我自己的代码。在我将此部分更改为之后,此代码仍然有效:。Where=>x.Element改为。Wherex=>x.Element感谢您的帮助
foreach(var l in lst)
{
l.title;
l.id;
}