使用 VBScript 遍历 XML 文件中的所有节点

2024-01-02

我编写了一个 VBScript,它应该遍历 XML 文件中的所有节点,无论树的深度如何。这一点做得很好except不显示 2 级或以上深度的节点的节点名称。我需要节点名称和值,以便获得名称/值对以供其他程序进一步处理。任何人都可以帮我显示丢失的节点名称。

下面是我的代码:

<html>
<head>
</head>
<body>

<script type="text/vbscript">
Set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("test.xml")
Dim objDocElem, strNode, strSubNode, xmlnn, xmlnv, xmlnc, xmldd, xmlfd, xmlfv

Set n_firstchild = xmldoc.documentElement.firstChild
Set p_node = n_firstchild.parentNode
Set pn_attribs = p_node.attributes
For Each pnAttr in pn_attribs
   xmlfd = xmlfd & pnAttr.name & chr(9)
   xmlfv = xmlfv & pnAttr.value & chr(9)
Next 

Set objDocElem=xmlDoc.documentElement

Set y = objDocElem.childNodes
i=0
Do While i < y.length 
If y(i).nodeType <> 3 Then
  If Isnull(y(i).childNodes(0).nodeValue) Then
     xmlnv = xmlnv & "Category" & chr(9)
  Else
     xmlnv = xmlnv & y(i).childNodes(0).nodeValue & chr(9)
  End If
  xmlnn = xmlnn & y(i).nodeName & chr(9)
  xmlnc = xmlnc + 1
  z=0
  Do While z < y(i).childNodes.length
    If y(i).childNodes(z).nodeType <> 3 Then
       xmlnc = xmlnc + 1
       xmlnn = xmlnn & y(i).childNodes(z).nodeName & chr(9)
       xmlnv = xmlnv & y(i).childNodes(z).text & chr(9)
    End If
    z=z+1
  Loop
End If
i=i+1  
Loop

document.write("form details: " & xmlfd & "<br />")
document.write("form values: " & xmlfv & "<br /><br />")
document.write("node names: " & xmlnn & "<br />")
document.write("node values: " & xmlnv & "<br />")
document.write("<br />node count: " & xmlnc & "<br />")

</script>
</body>
</html>

和 XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<form penid="AJX-AAE-CRB-7P" submitted="2009-09-10 14:57:07" updated="2009-09-10 15:05:22" finalised="2009-09-10 15:59:48">
  <Forename>Russell</Forename>
  <Surname>Kilby</Surname>
  <HouseNumber>248</HouseNumber>
  <Letter>GRG</Letter>
  <Products>
    <WinSoftware>Product One</WinSoftware>
    <MacSoftware>Product Two</MacSoftware>        
    <LnxSoftware>Product Three</LnxSoftware>
    <Generic>
        <Product1>Speedo</Product1>
        <Product2>Switches</Product2>
        <Product3>BIOS</Product3>
        <TestOne>
            <Panel1>Front</Panel1>
            <Panel2>Back</Panel2>
            <Panel3>Middle</Panel3>
        </TestOne>
    </Generic>
    <Hardware>Fender</Hardware>
  </Products>
  <HouseName>Just Tea House</HouseName>
  <PostCode>B87 7DF</PostCode>
  <Insurer>ABC Cars</Insurer>
  <PolicyNumber>FDA 8D3JD7K</PolicyNumber>
  <Make>Ford</Make>
  <VehicleReg>EX51 CBA</VehicleReg>
  <DescriptionOfDamage>Big smash on the from</DescriptionOfDamage>
  <Estimate>1300</Estimate>
  <AlertManager>Yes</AlertManager>
</form>

请尝试这个:

set nodes = xmlDoc.selectNodes("//*")    
for i = 0 to nodes.length
    document.write(nodes(i).nodeName & " - " & nodes(i).text & "<br />")
next
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VBScript 遍历 XML 文件中的所有节点 的相关文章

随机推荐

  • cypress - 访问主站点时出现 403 禁止错误

    我正在尝试 cy visit 我的单页应用程序 该应用程序需要在浏览器中加载我的证书才能正确运行 运行测试时 它失败并出现 403 禁止错误 有一个可怕的解决方法 我在 cypress chrome 浏览器窗口中打开一个新选项卡 然后直接转
  • C++ 中指针“this+1”指的是什么?

    我正在浏览代码G2P 推理 https www i6 informatik rwth aachen de web Software g2p html并发现了一行非常奇怪的代码 public const Node childrenEnd co
  • 按服务数据 UUID 进行 BLE 扫描过滤器

    我们有使用 服务数据 128 位 UUID AD 类型信标数据的设备 0x21 对于 Android 扫描 我们通过 MAC 地址过滤 BLE 设备 效果很好 因为我们需要更大的灵活性 所以我们想通过 UUID 进行过滤 我的代码仅适用于小
  • 处理数学函数中的错误

    数学相关函数中错误处理的良好做法是什么 我正在构建一个专门函数的库 模块 我的主要目的是使调用这些函数的代码更容易调试 而不是创建一个闪亮的用户友好的错误处理工具 下面是 VBA 中的一个简单示例 但我也有兴趣听到其他语言的信息 我不太确定
  • 创建帖子时创建 Woocommerce 产品

    我在我的 WordPress 网站上使用 Woocommerce 我在我的网站上销售各种物品 我想要的是 每次我创建有关特定商品的小帖子时 它还会创建一个 Woocommerce 产品页面 其中包含可供出售的商品 例如 我创建了一篇关于定制
  • 在实体框架中创建动态 linq 排序和搜索顺序语句时

    我正在尝试构建一个函数来根据某些参数动态生成不同的查询 我对 LINQ 语法有点困惑 不确定我是否做对了 字符串类型参数集是 search 用于搜索文本框值 searchfield 搜索内容 limit begin limit end 用于
  • Gradle 混合构建风味

    有没有办法在gradle中 混合 多种口味 例如 假设我有两种口味 Red and Blue 现在假设我有两种口味 我希望它们有 子口味 如果你喜欢的话 Complex and Simple 到目前为止我所知道的是 这需要我创建四种口味 R
  • Getview里面的Click方法被多次调用

    我希望 click 方法只被调用一次 我该怎么做才能得到这个结果 这是我的代码 public override View GetView int position View convertView ViewGroup parent View
  • 限制多个 MongoDB 数组大小

    我有一个文档 其中列出了按主题分隔的作者的帖子项 ID 这会产生如下所示的文档 id sdkafjsadkfjads3023 Author SomeGuy RecentPosts topic 1 Count 4 Posts postitem
  • 预定义类型 microsoft.csharp.runtimebinder 未定义或导入

    我在我的 C 项目中使用动态关键字 我收到以下错误 找不到编译动态表达式所需的一种或多种类型 下面是我的代码 我们使用 VS 2013 和 NET Framework 4 5 1 dynamic cstmDocProp Microsoft
  • 如何让JVM默认使用给定的源IP?

    在使用默认的内置 java xml SOAPConnectionFactory 时 有什么方法可以强制 JVM 使用特定的源 IP 地址吗 看起来默认最终会创建 HttpSOAPConnection 对象 sun 私有 API 然后在底层使
  • 在zend框架中设置cookie

    我是 zend 框架的新手 我已经编写了这段代码来在我的网站中设置 cookie public function setCookie data email cookie new Zend Http Cookie user email id
  • 最小的音频文件:MP3、Ogg 还是 Wav?

    我正在寻找最小类型的音频文件 以便某些 JavaScript 能够更流畅地工作 在这三个人中 Ogg通常会小于MP3 两者都会比未压缩的小得多WAV 当然 可能还有其他因素对您的网站产生影响 例如质量 对于大多数用途来说没有太大的明显差异
  • Catch 动态地将参数传递给测试用例

    我有一个 C 项目 正在使用它进行测试捕获 cpp https github com philsquared Catch 我编译并运行以下文件来运行我的测试 define CATCH CONFIG MAIN include catch hp
  • 如何分离多机集群配置的各个阶段?

    假设我有 4 个 Vagrant 盒子 3 种是相同配置的变体 例如 Consul 而一种具有完全不同的配置 例如数据库 我需要在三个配置相似的 Consul VM 上运行一个略有不同的配置步骤 然后 我需要针对其中 1 个 Vault V
  • 在 cygwin 上安装 uwsgi

    有人设法在 cygwin python 2 7 上安装 uwsgi 吗 uwsgi 2 0 11 2 python setup py install running install using profile buildconf defau
  • 有没有 Maven 睡眠功能?

    我设置了 Maven 配置文件用于测试 在预集成测试中 maven 启动两个 jetty 服务器 然后启动测试 我偶然发现的问题是在服务器中 测试开始时它们没有完全加载 看来问题是通过在测试中添加 5 秒睡眠时间来解决的 但我希望将其添加到
  • Makefile 中是否可以依赖符号链接?

    我的项目中需要几个符号链接 From src openlayers 文件夹img and theme必须符号链接在contrib openlayers The contrib openlayers文件夹也应该自动创建 PHONY run r
  • 如果所有者将我从 CloudKit 上的 CKShare 中删除,如何收到通知

    假设某张唱片的所有者与我分享了该唱片 我收到一个共享链接 我打开它并接受共享 如下所示 let operation CKAcceptSharesOperation shareMetadatas metadata operation acce
  • 使用 VBScript 遍历 XML 文件中的所有节点

    我编写了一个 VBScript 它应该遍历 XML 文件中的所有节点 无论树的深度如何 这一点做得很好except不显示 2 级或以上深度的节点的节点名称 我需要节点名称和值 以便获得名称 值对以供其他程序进一步处理 任何人都可以帮我显示丢