相关疑难解决方法(0)

在C#中使用带有默认命名空间的Xpath

我有一个带有默认命名空间的XML文档.我正在使用XPathNavigator使用Xpath选择一组节点,如下所示:

XmlElement myXML = ...;  
XPathNavigator navigator = myXML.CreateNavigator();
XPathNodeIterator result = navigator.Select("/outerelement/innerelement");
Run Code Online (Sandbox Code Playgroud)

我没有得到任何结果:我假设这是因为我没有指定命名空间.如何在我的选择中包含命名空间?

c# xml xpath namespaces xpathnavigator

61
推荐指数
8
解决办法
7万
查看次数

当根节点有属性时如何选择xml根节点?

我正在尝试使用 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 查询:/*该查询选择根节点,无论它是否有任何属性。一旦选择了根节点,我就可以迭代它的所有子节点。

c# xml xpath

5
推荐指数
1
解决办法
5121
查看次数

标签 统计

c# ×2

xml ×2

xpath ×2

namespaces ×1

xpathnavigator ×1