我正在使用经典的ASP,XML和xPath来选择一些数据,而我正在尝试在以下xml上进行选择,其中节点id_attribut包含“xc”。所以我想只选择前2个attribut。
我的xpath是:
"//attribut[contains(id_attribut,"xc")]"
但是ASP给了我错误:
msxml3.dll错误'80004005'未知方法。 // attribut [ - >含有(id_attribut< - “XC”)] /products/list_products.asp,第54行
在经典ASP(不是ASP.net)中,contains()不是xPath的有效函数吗?
我有以下XML:
<attributes>
<attribut>
<id_attribut>xc_elite</id_attribut>
<level>4</level>
<pty>1</pty>
<parent>xc</parent>
</attribut>
<attribut>
<id_attribut>xc_performance</id_attribut>
<level>4</level>
<pty>2</pty>
<parent>xc</parent>
</attribut>
<attribut>
<id_attribut>alp_elite</id_attribut>
<level>4</level>
<pty>1</pty>
<parent>alp</parent>
</attribut>
</attributes>
感谢您的帮助!!
答案 0 :(得分:0)
MSXML3因其错误消息的质量而闻名 - 尝试使用不同的处理器进行编译以获得更好的诊断信息。
我怀疑问题是你在第二个参数周围使用未转义的引号。如果使用双引号作为属性定界符,则必须在XPath表达式中使用单引号围绕字符串文字。
答案 1 :(得分:0)
似乎它不是XPath默认为你的。应指定 SelectionLanguage property。 XPath是DomDocument版本4.0 +的默认值 尝试创建像:
这样的对象Set oXml = Server.CreateObject("MSXML2.DomDocument.4.0")
或
Set oXml = Server.CreateObject("MSXML2.DomDocument")
oXml.SetProperty "SelectionLanguage", "XPath"
'oXml.Load ...
Set oNodes = oXml.selectNodes("//attribut[contains(id_attribut, 'xc')]")
'..