在 VBScript 中解析 XML 字符串

Bab*_*abs 5 xml string vbscript

我有一个 Web 服务,它返回类似于下面的 XML 字符串:

<?xml version="1.0"?>
<Result>
    <PersonID>991166187</PersonID>
    <AddressID>1303836</AddressID>
</Result>
Run Code Online (Sandbox Code Playgroud)

我需要一个VBScript代码,让我来检索值PersonIDAddressID。我的具体问题是如何PersonID991166187从原始帖子中的 XML 字符串中检索, 即 的

就我的尝试而言,我有以下代码:

Dim doc
Dim xmlString
Dim nodes
Dim idArray

xmlString = "<?xml version="1.0"?><Result><PersonID>991166187</PersonID><AddressID>1303836</Address&#8204;&#8203;ID></Result>"

Set doc = CreateObject("MSXML2.DOMDocument")
doc.loadXML(xmlString)

'Set nodes = doc.selectNodes("Result/PersonID/AddressID")
nodes = doc.getElementsByTagName("PersonID")

For Each node In nodes
  WScript.Echo "Person ID: " & node.text
Run Code Online (Sandbox Code Playgroud)

小智 5

浏览了您的代码,您需要编辑一些内容:

  1. 您得到的 XML 字符串中有双引号。您不能直接使用那些双引号并将其保存为字符串。您在这里有两个选择:
    1. 从字符串创建一个 XML 文件并解析
    2. 使用单引号替换双引号 Replace
  2. getElementsByTagName行应该有一个Set,因为返回的值是一个对象。

在我的机器上使用此代码并检索到所需的输出:

Dim doc 
Dim xmlString 
Dim nodes
xmlString = "<?xml version='1.0'?><Result><PersonID>991166187</PersonID><AddressID>1303836</AddressID></Result>"

Set doc = CreateObject("MSXML2.DOMDocument") 
doc.loadXML(xmlString) 
Set nodes = doc.getElementsByTagName("PersonID")

For Each node In nodes
  MsgBox "Person ID: " & node.text
Next
MsgBox "done"
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex -3

我建议你使用 vbs regexp 来实现这一点。请查看这个主题 如何正确匹配?