XML Namespace,无法选择节点

时间:2014-10-28 11:50:35

标签: xml xpath namespaces msxml

我有这个xml:

<?xml version="1.0" encoding="utf-8" ?>  
    <ArrayOfFileInformation xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://tempuri.org/">  <Data> ......

当我将"xmlns="http://tempuri.org/"留在Xml中时,以下内容不会返回任何节点:

CString tag = L"//Data";
MSXML2::IXMLDOMNodeListPtr pDataTag = pXMLDocument->selectNodes((_bstr_t)tag);

当我删除属性时,一切正常。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:2)

为了在XPath中选择命名空间节点,您需要使用XPath库提供的工具将前缀绑定到相关的命名空间URI,然后在按名称选择节点时使用该前缀。 selectNodes方法的MSDN文档有a C++ example of just this,关键是在文档上设置SelectionNamespaces属性

pXMLDocument->setProperty("SelectionNamespaces", "xmlns:tmp='http://tempuri.org/'");

然后允许您使用//tmp:Data

的XPath