我有一个这种格式的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]");
答案 0 :(得分:4)
XPath应为//Service/name
var serviceList = rootNode.SelectNodes("//Service/name");
或descendant::Service/name
,如果您更喜欢这种语法。