C# XPath来访问xml中的标签/值节点

C# XPath来访问xml中的标签/值节点,c#,xpath,C#,Xpath,我正在尝试访问下面xml中的标签/值节点。我必须匹配标签并获得值 <OneStopCenterResult> <OneStopCenterInfoResults> <OneStopCenterInfo> <LabelValues> <Label>Name of Center</Label> <Value>Arlington Employment Center</Value>

我正在尝试访问下面xml中的标签/值节点。我必须匹配标签并获得值

   <OneStopCenterResult>
    <OneStopCenterInfoResults>
    <OneStopCenterInfo>
    <LabelValues>
<Label>Name of Center</Label>
<Value>Arlington Employment Center</Value>
</LabelValues>
<LabelValues>
<Label>ADDRESS_1</Label>
<Value>2100 Washington Blvd</Value>
</LabelValues>
</OneStopCenterInfo>
</OneStopCenterInfoResults>
</OneStopCenterResult>
C#函数调用
我正在使用下面的函数根据标签值检索标签/值

 private string GetHTMLTableString(XmlDocument xmlResults)
      {
       //Sort the table based on EmpCount 
        string outPutString = string.Empty;


 XmlNodeList empDetail=null;
            try
            {
//the below code is not working
                 empDetail = xmlResults.SelectNodes("/OneStopCenterResult/OneStopCenterInfoResults/OneStopCenterInfo/LabelValues[Label] ='Name of Center'");

                //foreach (XmlNode node in empDetail)
                //{

                //    Response.Write(" for loop  " + node.SelectSingleNode("/Label").Value);


                //}
            }
            catch (Exception ex)
            {
                Response.Write(" Error  " +ex.ToString()); 
                Response.End();
            }

            }
提前感谢

您可以直接使用,尽管这会导致出现一个类似于
//LabelValues/Value[previous sibling::Label[1]=“Name of Center”]/text()的复杂表达式,该表达式查找
文本()
一个
值的
元素,其第一个
前面的同级::Label
元素包含
中心的名称
。测试用例通过:

%cat label.xml
中心名称
v
%xpquery'//LabelValues/Value[前面的同级::Label[1]=“中心名称”]/text()”Label.xml
v
% 
Hmm可能依赖于实现;您的将获取元素,而不是文本:

% xpquery '//LabelValues/Value[preceding-sibling::Label="Name of Center"]' label.xml
<Value>v</Value>
%xpquery'//LabelValues/Value[前面的同级::Label=“中心名称”]”Label.xml
v

XmlNode ajcNode=xmlResults。选择singlenode(“/OneStopCenterResult/OneStopCenterInfoResults/OneStopCenterInfo/LabelValues/Label[text()='Name of Center']”;-这将返回中心的名称XmlNode ajcNodeValue=xmlResults。选择SingleNode(“/OneStopCenterResult/OneStopCenterInfoResults/OneStopCenterInfo/LabelValues/Value[前面的同级::Label[1]='Name of Center']/text()”;这将返回emptyi刚刚将代码更正为XmlNode ajcNodeValue=xmlResults。选择SingleNode(“/OneStopCenterResult/OneStopCenterInfoResults/OneStopCenterInfo/LabelValues/Value[前面的同级::Label='Center']名称]”;它起作用了!!
% cat label.xml 
<foo>
<LabelValues>
<Label>Name of Center</Label>
<Value>v</Value>
</LabelValues>
</foo>
% xpquery '//LabelValues/Value[preceding-sibling::Label[1]="Name of Center"]/text()' label.xml
v
% 
% xpquery '//LabelValues/Value[preceding-sibling::Label="Name of Center"]' label.xml
<Value>v</Value>