XML格式不正确 - Xpath请求

时间:2015-04-24 08:11:49

标签: xml xpath

我遇到了XPath请求的问题。

<mainNode id="id35" soapenc:root="0">
    <node1 xsi:type="soapenc:string">response1</node1>
    <node2 xsi:type="soapenc:string"/>
    <node3 xsi:type="soapenc:string">response2</node3>
    <node4 xsi:type="soapenc:string">response3</node4>
    <node5 href="#id156"/>
</mainNode>

我的XPath请求:

/ mainNode /节点1 /文本()

结果:

错误 - 看起来像XML格式不正确:与元素类型“mainNode”关联的属性“soapenc:root”的前缀“soapenc”未绑定。

有什么想法吗?

PS:我从SOAP WebService获取此XML文件

1 个答案:

答案 0 :(得分:0)

很高兴看到完整的XML示例,但听起来您的问题与名称空间管理有关。您也没有指定您使用的语言,但是您看过XML namespaces and XPath。下面是来自@harpo答案的一篇文章,展示了如果你真的不关心它们,如何从XML文档中删除命名空间。

  

&#34;如果你真的需要对将要使用的文件执行XPath   未知的命名空间,你真的不关心它,你需要   将其剥离并重新加载文档。 XPath不适用于   命名空间无关的方式,除非你想使用local-name()   在选择器的每个点都起作用。&#34;

private XmlDocument StripNamespace(XmlDocument doc)
{
    if (doc.DocumentElement.NamespaceURI.Length > 0)
    {
        doc.DocumentElement.SetAttribute("xmlns", "");
        // must serialize and reload for this to take effect
        XmlDocument newDoc = new XmlDocument();
        newDoc.LoadXml(doc.OuterXml);
        return newDoc;
    }
    else
    {
        return doc;
    }
}