Asp classic 如何将字符串转换为XML&;在经典asp中获取XML子节点值?
`在这里,我将一个字符串转换为XML:Asp classic 如何将字符串转换为XML&;在经典asp中获取XML子节点值?,asp-classic,Asp Classic,`在这里,我将一个字符串转换为XML: xmlString = " <?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & _ " <hub:notifications>" & _ " <hub:notificationId>728dc361-8b4f-4acc-ad2d-9a63125c5114</hub:notificationId>
xmlString =
" <?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & _
" <hub:notifications>" & _
" <hub:notificationId>728dc361-8b4f-4acc-ad2d-9a63125c5114</hub:notificationId>" & _
" <hub:notificationId>5b7c6989-ee27-422c-bbed-2f2c36136c5b</hub:notificationId>" & _
" <hub:notificationId>67d1fffe-ab3f-43e3-bb03-24926debe2dc</hub:notificationId>" & _
" </hub:notifications>"
objXML.LoadXml(xmlString)
set Node = objXML.selectSingleNode("hub:notifications/hub:notificationId")
i = 0
Count = 0
For Each Node In objXML.selectNodes("hub:notifications")
ReDim Preserve aryNotificationIDs (i + 1)
aryNotificationIDs(i) = Node.selectSingleNode("hub:notificationId").text
Count++
Next
Response.write Count
xmlString=
" " & _
" " & _
“728dc361-8b4f-4acc-ad2d-9a63125c5114”和_
“5b7c6989-ee27-422c-bbed-2f2c36136c5b”和_
“67d1fffe-ab3f-43e3-bb03-24926debe2dc”和_
" "
LoadXml(xmlString)
set Node=objXML.selectSingleNode(“hub:notifications/hub:notificationId”)
i=0
计数=0
对于objXML.selectNodes中的每个节点(“集线器:通知”)
ReDim通知ID(i+1)
AryNotificationId(i)=节点。选择SingleNode(“集线器:notificationId”)。文本
计数++
下一个
Response.write计数
在上面,我没有得到子节点的计数
以及如何获取子节点值。
有人能帮我吗
谢谢,
Jagadi`您发布的代码有很多问题 你用的是什么语言?似乎有来自VBScript和JScript的样式。它主要是VBScript,所以我将假设这就是您在整个过程中要使用的内容 第二 必须是字符串中的第一个字符。 即:
”&
不是
”&
第三
具有名称空间的XML需要在使用名称空间的顶级节点中声明。
例如,根节点
将成为
但是您可以使用适合您的URL替换stackoverflow URL
第四
如果要遍历hub:notifications
的子节点,则需要将“减速”更改为:
objXML中每个节点的。选择SingleNode(“集线器:通知”)。childNodes
第五
i
在循环中没有增加,因此您正在将aryNotificationIDs(1)
设置为节点的不同值
第六
与第一个有关。VBScript中没有++
运算符。在For循环中,您不需要同时使用i
和Count
另外
您不需要在节点之间循环以获得计数。可以使用xpath选择器和length属性。例如,objXML.selectNodes(“hub:notifications/hub:notificationId”)。长度
最后
我为您编写了代码并应用了上述建议,还包括了一个错误检查部分,用于检查xml是否正确加载。下面的代码将输出hub:notificationId
节点的计数,并列出数组arynotificationid
中的所有值。我删除了其他多余的代码
xmlString = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & _
" <hub:notifications xmlns:hub='http://stackoverflow.com'>" & _
" <hub:notificationId>728dc361-8b4f-4acc-ad2d-9a63125c5114</hub:notificationId>" & _
" <hub:notificationId>5b7c6989-ee27-422c-bbed-2f2c36136c5b</hub:notificationId>" & _
" <hub:notificationId>67d1fffe-ab3f-43e3-bb03-24926debe2dc</hub:notificationId>" & _
" </hub:notifications>"
Set objXML = Server.CreateObject("Msxml2.DOMDocument")
objXML.LoadXml(xmlString)
If objXML.parseError.errorCode <> 0 Then
Response.Write "<p>Parse Error Reason: " & objXML.parseError.reason & "</p>"
Else
For Each node In objXML.selectSingleNode("hub:notifications").childNodes
ReDim Preserve aryNotificationIDs(i)
aryNotificationIDs(i) = node.text
i = i + 1
Next
Response.Write "<p>Count: " & i & "</p>"
For j = 0 to i - 1
Response.Write "<p>aryNotificationIDs(" & j & ") = " & aryNotificationIDs(j) & "</p>"
Next
End If
xmlString=”“&_
" " & _
“728dc361-8b4f-4acc-ad2d-9a63125c5114”和_
“5b7c6989-ee27-422c-bbed-2f2c36136c5b”和_
“67d1fffe-ab3f-43e3-bb03-24926debe2dc”和_
" "
设置objXML=Server.CreateObject(“Msxml2.DOMDocument”)
LoadXml(xmlString)
如果objXML.parseError.errorCode为0,则
响应。写入“解析错误原因:&objXML.parseError.Reason&””
其他的
对于objXML中的每个节点。选择SingleNode(“集线器:通知”).childNodes
ReDim通知ID(i)
aryNotificationIDs(i)=node.text
i=i+1
下一个
响应。写入“计数:&i&””
对于j=0到i-1
响应。写入“aryNotificationIDs(“&j&””=“&aryNotificationIDs(j)&””
下一个
如果结束
您发布的代码存在许多问题
你用的是什么语言?似乎有来自VBScript和JScript的样式。它主要是VBScript,所以我将假设这就是您在整个过程中要使用的内容
第二
必须是字符串中的第一个字符。
即:
”&
不是
”&
第三
具有名称空间的XML需要在使用名称空间的顶级节点中声明。
例如,根节点
将成为
但是您可以使用适合您的URL替换stackoverflow URL
第四
如果要遍历hub:notifications
的子节点,则需要将“减速”更改为:
objXML中每个节点的。选择SingleNode(“集线器:通知”)。childNodes
第五
i
在循环中没有增加,因此您正在将aryNotificationIDs(1)
设置为节点的不同值
第六
与第一个有关。VBScript中没有++
运算符。在For循环中,您不需要同时使用i
和Count
另外
您不需要在节点之间循环以获得计数。可以使用xpath选择器和length属性。例如,objXML.selectNodes(“hub:notifications/hub:notificationId”)。长度
最后
我为您编写了代码并应用了上述建议,还包括了一个错误检查部分,用于检查xml是否正确加载。下面的代码将输出hub:notificationId
节点的计数,并列出数组arynotificationid
中的所有值。我删除了其他多余的代码
xmlString = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" & _
" <hub:notifications xmlns:hub='http://stackoverflow.com'>" & _
" <hub:notificationId>728dc361-8b4f-4acc-ad2d-9a63125c5114</hub:notificationId>" & _
" <hub:notificationId>5b7c6989-ee27-422c-bbed-2f2c36136c5b</hub:notificationId>" & _
" <hub:notificationId>67d1fffe-ab3f-43e3-bb03-24926debe2dc</hub:notificationId>" & _
" </hub:notifications>"
Set objXML = Server.CreateObject("Msxml2.DOMDocument")
objXML.LoadXml(xmlString)
If objXML.parseError.errorCode <> 0 Then
Response.Write "<p>Parse Error Reason: " & objXML.parseError.reason & "</p>"
Else
For Each node In objXML.selectSingleNode("hub:notifications").childNodes
ReDim Preserve aryNotificationIDs(i)
aryNotificationIDs(i) = node.text
i = i + 1
Next
Response.Write "<p>Count: " & i & "</p>"
For j = 0 to i - 1
Response.Write "<p>aryNotificationIDs(" & j & ") = " & aryNotificationIDs(j) & "</p>"
Next
End If
xmlString=”“&_
" " & _
“728dc361-8b4f-4acc-ad2d-9a63125c5114”和_
“5b7c6989-ee27-422c-bbed-2f2c36136c5b”和_
“67d1fffe-ab3f-43e3-bb03-24926debe2dc”和_
" "
设置objXML=Server.CreateObject(“Msxml2.DOMDocument”)
LoadXml(xmlString)
如果objXML.parseError.errorCode为0,则
响应。写入“解析错误原因:&objXML.parseError.Reason&””
其他的
对于objXML中的每个节点。选择SingleNode(“集线器:通知”).childNodes
ReDim通知ID(i)
aryNotificationIDs(i)=node.text
i=i+1
下一个
响应。写入“计数:&i&””
对于j=0到i-1
响应。写入“aryNotificationIDs(“&j&””=“&aryNotificationIDs(j)&””
下一个
如果结束
谢谢你的帮助。在