我正在尝试使用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等),但没有任何作用!
有什么想法吗?
答案 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表达式中的步骤。