经典asp无法识别xPath contains()函数

时间:2011-11-02 20:07:43

标签: xml xpath asp-classic

我正在使用经典的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>

感谢您的帮助!!

2 个答案:

答案 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')]")
'..