我是一个新手,XML和我有一个XML文档(这我不能编辑,因为它来自其他地方),但它有这样一个根节点:为什么我不能使用xpath来解析默认命名空间中的节点?
<Configuration xmlns="http://schemas.mycomp.com/product/settings" version="2.0.0">
我试图解析这个文档带有msxml和xpath,如果我删除了xmlns属性,我已经成功完成了。出于某种原因,使用这个xmlns属性,文档将不会被解析。我已经尝试设置MSXML解析使用识别文档:
m_pXMLDoc->setProperty(_bstr_t(L"AllowDocumentFunction"), _variant_t(true));
m_pXMLDoc->setProperty(_bstr_t(L"AllowXsltScript"), _variant_t(true));
m_pXMLDoc->setProperty(_bstr_t(L"SelectionLanguage"), _variant_t(L"XPath"));
m_pXMLDoc->setProperty(_bstr_t(L"SelectionNamespaces"), _variant_t(L"xmlns='http://schemas.mycomp.com/product/settings'"));
m_pXMLDoc->preserveWhiteSpace = VARIANT_FALSE;
m_pXMLDoc->resolveExternals = VARIANT_TRUE;
m_pXMLDoc->validateOnParse = VARIANT_FALSE;
从阅读围绕它看起来像的XPath只能在“没有名字”的命名空间和该文件将默认的命名空间,以便它不再“无名”。我可以使用MSXML设置xpath使用的命名空间吗?
嗯,我发现,如果我编辑的XML文件并将xmlns属性更改为xmlns:x =“http://schemas.mycomp.com/product/settings”,则文档解析得很好。我想这是与在默认命名空间中导致我的问题的元素有关... – Benj 2012-01-11 11:22:41
不要忘记在您的XPath表达式中包含x:在这种情况下。 /x:元素仍然会匹配,而/ Element会匹配两个东西:带有默认命名空间和没有命名空间。 –
2013-07-03 11:41:04