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 Weather时,它看起来就像Google WeatherYes。有人可以告诉我我的XPath怎么了(在这里):
InitializeDropDown(\"SupportedWeatherServices.xml\",\"descendant::Service[name]\");
    

解决方法

        XPath应该是
//Service/name
var serviceList = rootNode.SelectNodes(\"//Service/name\");
descendant::Service/name
(如果您更喜欢此语法)。