XPath无法按预期工作

时间:2011-06-10 05:04:34

标签: c# .net xml c#-4.0 xpath

我有一个这种格式的XML文档:

<?xml version="1.0" encoding="utf-8" ?>
<SupportedServices>
  <Service>
    <name>Google Weather</name>
    <active>Yes</active>
  </Service>
   ...
</SupportedServices>

我正在尝试解析XML文件:

public void InitializeDropDown(string XmlFile, string xpath)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(XmlFile);

    var rootNode = doc.DocumentElement;

    var serviceList = rootNode.SelectNodes(xpath);

    Parallel.ForEach(serviceList.Cast<XmlNode>(), service =>
    {
        if (Properties.Settings.Default.ServiceActive &&
            Properties.Settings.Default.ServiceName == service.InnerText)
        {
            WeatherServicesCBO.Items.Add(service.InnerText);
        }
    });
}

我遇到的问题是两个值(名称和活动)都被选中,因此它看起来像 Google WeatherYes ,当我想要的只是 Google天气。有人能告诉我我的XPath有什么问题(在这里):

InitializeDropDown("SupportedWeatherServices.xml", "descendant::Service[name]");

1 个答案:

答案 0 :(得分:4)

XPath应为//Service/name

var serviceList = rootNode.SelectNodes("//Service/name");

descendant::Service/name,如果您更喜欢这种语法。