我有一个带有默认命名空间的XML文档.我正在使用XPathNavigator使用Xpath选择一组节点,如下所示:
XmlElement myXML = ...;
XPathNavigator navigator = myXML.CreateNavigator();
XPathNodeIterator result = navigator.Select("/outerelement/innerelement");
Run Code Online (Sandbox Code Playgroud)
我没有得到任何结果:我假设这是因为我没有指定命名空间.如何在我的选择中包含命名空间?
我正在尝试使用 XPath 查询选择 xml 文档根节点的所有子节点。
我的 xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<automotive_industry>
<automotive />
<rail_global_services />
</automotive_industry>
</root>
Run Code Online (Sandbox Code Playgroud)
和
<?xml version="1.0" encoding="UTF-8" ?>
<root xmlns="http://www.my_department.my_company.com/project_name">
<automotive_industry>
<automotive />
<rail_global_services />
</automotive_industry>
</root>
Run Code Online (Sandbox Code Playgroud)
选择根节点的C#代码如下:
XmlDocument gazetteDocument = new XmlDocument();
gazetteDocument.Load(xmlFilePath);
XmlNodeList allNodes = gazetteDocument.SelectNodes("root");
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,当根节点没有任何属性时,它会选择根节点的所有子节点,也就是说,它适用于第一个 xml 文件,但不适用于第二个 xml 文件,因为第二个文件具有 xmlns 属性。
有谁知道当根节点有属性时如何选择根节点的所有子节点?
编辑:
我发现一个 XPath 查询:/*该查询选择根节点,无论它是否有任何属性。一旦选择了根节点,我就可以迭代它的所有子节点。