C#XPathSelectElement返回null

时间:2010-11-16 13:48:11

标签: c# xpath

我正在尝试使用System.Xml.XPath命名空间的XPathSelectElement方法但由于某种原因它总是返回null,我不知道为什么。

以下是代码:

TextReader stream = new StreamReader("config.ini");
XmlReader reader = XmlReader.Create(stream);
XElement xml = XElement.Load(reader);

XElement file = xml.XPathSelectElement("Config/File");

以下是它试图阅读的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<Config>
 <File>serp_feed.xml</File>
</Config>

我尝试了很多东西(添加命名空间表,更改XPath等),但没有任何作用!

有什么想法吗?

2 个答案:

答案 0 :(得分:9)

使用XElement.Load,名为xml的变量是根元素,即您发布的XML示例的“Config”元素。如果您使用该元素上的路径Config/File作为上下文节点,那么您正在寻找名为“Config”的子元素,该子元素具有后代“File”元素。 “Config”元素没有“Config”子元素,它只有一个“File”子元素。所以你想要XPath File或者你需要XDocument xml = XDocument.Load("config.ini),那么你的路径就可以了。

答案 1 :(得分:4)

尝试

XElement file = xml.XPathSelectElement("File")

因为您使用的是XElement.Load而不是XDocument.Load,所以根目录将是文档,而不是文档,因此不需要XPath表达式中的步骤。