C# 解析XML文件以检查2个子节点,然后将第3个节点返回到datalist

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> <

我正在使用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>
我尝试过这个,但它不起作用:

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;
}