xml - 如何使用 VBScript 和 XPATH 查找 XML 中元素的序号位置

标签 xml xpath asp-classic vbscript

我有一个像这样的 XML

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">1</int>
    <lst name="params">
        <str name="start">num</str>
        <str name="fl">string</str>
        <str name="q">string</str>
        <str name="rows">num</str>
        <str name="op">string</str>
        <str name="sort">string</str>
    </lst>
</lst>
<result name="response" numFound="20" start="1">
    <doc>
        <arr name="URL"><str>string</str></arr>
        <arr name="ID"><int>1</int></arr>
    </doc>
    <doc>
        <arr name="URL"><str>string</str></arr>
        <arr name="ID"><int>2</int></arr>
    </doc>  
    <doc>
        <arr name="URL"><str>string</str></arr>
        <arr name="ID"><int>3</int></arr>
    </doc>      
    <doc>
        <arr name="URL"><str>string</str></arr>
        <arr name="ID"><int>4</int></arr>
    </doc>      
</result>
</response>

我需要找到元素 doc 的序号位置,其中子节点 arr/id 的文本值为 2

我正在使用经典 ASP

谢谢

最佳答案

使用例如

Set doc = Server.CreateObject("Msxml2.DOMDocument.3.0")
doc.async = False
If doc.load(Server.MapPath("input.xml")) Then
  doc.setProperty "SelectionLanguage", "XPath"
  Set docEl = doc.selectSingleNode("response/result/doc[arr[@name = 'ID'] = 2]")
  If Not(doc Is Nothing) Then
    Response.Write(docEl.selectNodes("preceding-sibling::doc").length)
  Else
    Response.Write("Not found.")
  End If
Else
  Response.Write doc.parseError.reason
End If

正如已经指出的,如果您希望索引从 1 而不是 0 开始,那么您需要在结果中添加 1。

关于xml - 如何使用 VBScript 和 XPATH 查找 XML 中元素的序号位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681431/

相关文章:

asp.net - 旧站点迁移选项

asp-classic - 剩余的过程调用或参数无效

sql-server-2008 - 连接字符串中的经典 ASP 集成安全

java - 显示居中对齐的 Web View

java - 将字符串转换为 w3c.dom.Element : XMLParseException:Start of root element expected

java - 我在使用 LibGDX TileMaps 时遇到了困难

Java使用xpath获取xml元素值 "And"

java - 我应该为 Galaxy S8+/S9+ 使用什么值文件夹

xml - odoo/openERP中子节点的Qweb Xpath?

html - 在 HTML5 中注入(inject)自定义元素,然后使用 XPath 检索其值返回空白