Извиняюсь, я знаю, что это старые добрые времена, но у меня здесь немного угасает мозг, мне просто нужен конкретный пример кода, чтобы продолжить...
Это проблема с использованием фрагмента XML, возвращаемого удаленной службой.
<pap>
<push-response push-id = "99c2d0d3-6cce-4207-88c4-54bc8e852501">
<address address-value = "WIN">5557489580</address>
<response-result code = "1000"/>
</push-response>
</pap>
Несколько лет назад я написал простую функцию VB, которая извлекает нужные мне данные из XML.
<%@ Page Language = "VB" explicit = "true" validateRequest = "false" %>
<%@ Import namespace = "ADODB" %>
<%@ Import namespace = "WinHttp" %>
<%@ Import namespace = "MSXML" %>
<%@ Import namespace = "Scripting" %>
<script language = "VB" runat = "Server">
Function ExtractDataFromXML2(ByRef sInputXML As String) As String
Dim XMLDom As MSXML.DOMDocument
Dim currNode As MSXML.IXMLDOMNodeList
Dim Node As MSXML.IXMLDOMNode
Dim sError As String
Dim sMessageID As String
Dim sResult As String
XMLDom = New MSXML.DOMDocument
XMLDom.async = False
If (XMLDom.loadXML(sInputXML) = False) Then
sResult = "XML Parse Error: " & XMLDom.parseError.reason & " code = " & XMLDom.parseError.errorCode & " " & Chr(13) & Chr(10)
Else
currNode = XMLDom.selectNodes("//push-response")
For Each Node In currNode
sError = Node.selectSingleNode("response-result").attributes.getNamedItem("code").Text
sMessageID = "rubbish"
If sError = "1000" Then
sResult = Node.selectSingleNode("address").Text & "@" & sMessageID
Else
sResult = "Error " & sError & ": " & Node.selectSingleNode("response-result").attributes.getNamedItem("desc").Text
End If
Next Node
End If
ExtractDataFromXML2 = sResult
End Function
</script>
Хоть убей, я не могу вспомнить, как вставить этот идентификатор GUID в мой инициализированный в настоящее время «мусор» sMessageID.
В противном случае работает нормально... требуется только ОДНА СТРОКА VB, пожалуйста..?
Верно, в этом случае VB.Net отличается еще сильнее.
Отвечает ли это на ваш вопрос? Получить атрибуты XML в VB Net
Отвечает ли это на ваш вопрос? Как определить, имеет ли XmlNode определенный атрибут?
Просто нужно немного поискать, прежде чем задавать вопрос.
Разобрались, Мартин Хоннен дал мне совет. Спасибо за интерес, дело закрыто.
Вы упускаете суть, но ладно, ваша помощь пошла вам на пользу.
Должен быть.
sMessageID = Node.attributes.getNamedItem("push-id").Text
Здоровья, дружище..! :о)
Где вы отвечаете за VBScript, VBA или VB.Net, сказать сложно. Если это был VBScript, то для него уже существует очень хорошая каноническая версия, выпущенная более 7 лет назад! - Как получить значение атрибута XML?.
@user692942 user692942, я попытался предложить утверждение, соответствующее синтаксису, методам и свойствам, уже использованным в коде, и сказал, что нужно выполнить работу для других значений, не имея возможности точно сказать, какая это версия/вариант VBX. Кажется, на плакате позже было написано, что это VB.NET (хотя и с MSXML?), я точно не могу сказать. Пусть автор решит, полезен ли ответ.
В любом случае, будь то VBScript или VB.Net, существует канонический вопрос, который уже существует, если не множественный, все это лишь еще больше разбавляет его еще большей двусмысленностью.
Это не VBScript, это VBA.