Доступ к определенному атрибуту внутри файла XML

Я пытаюсь получить текст внутри определенных атрибутов этого файла XML. Например текст внутри описания, тип и т.д.

В настоящее время я получаю сообщение об ошибке:

Строка: 23
Ошибка: требуется объект: 'objNode.attributes.getNameItem(....)'

Как я могу получить доступ к определенным атрибутам загружаемого XML-файла? описание, подробности->serviceName, тип

<!DOCTYPE html>
<html lang="en">
<head>
    <title>XML</title>
    <HTA:APPLICATION
        APPLICATIONNAME = "XPOS removal tool"
    />
</head>
<script language="VBScript">
    Sub Window_onLoad
        Set xmlDoc = CreateObject("Microsoft.XMLDOM")
        xmlDoc.Async = "False"
        xmlDoc.Load("programs1.xml")

        strQuery = "/steps/step"

        Set colNodes = xmlDoc.selectNodes( strQuery )

        htmlString = "<table><tr><th>Description</th><th>Type</th><th>Status</th></tr>"

        For Each objNode in colNodes
            htmlString = htmlString & "<tr><td>"& objNode.attributes.getNamedItem("description").value &"</td><td>test</td></tr>"
            // htmlString = htmlString & "<tr><td>"& objNode.text &"</td><td>test</td></tr>"
        Next

        htmlString = htmlString & "</table>"

        DataArea.innerHTML = htmlString
    End Sub
</script>

<body>
<div id="DataArea"></div>
</body>
</html>

XML data:

<?xml version='1.0'?> 
<steps>
<step>
    <description>Description 1</description>
    <type>Type 5</type>
    <details>
      <runFolder>c:\windows</runFolder>
      <runFile>v3-x86.exe</runFile>
    </details>
  </step>
  <step>
    <description>Description 2</description>
    <type>Type 4</type>
    <details>
      <serviceName>COMRedirector</serviceName>
      <processName>COMRedirectorServ</processName>
    </details>
  </step>
  <step>
    <description>Description 3</description>
    <type>Type 3</type>
    <details>
      <serviceName>OSUpdate</serviceName>
      <processName>OSUpdateServ</processName>
    </details>
  </step>
</steps>

person Funtriaco Prado    schedule 30.03.2016    source источник


Ответы (2)


Вы получаете атрибут .GetAttribute(...), а не .Attributes.GetNamedItem(...). Однако после того, как вы отобразите и посмотрите на ваши фактические данные XML: вы не ищете атрибуты в первую очередь. Вы хотите выбрать текст/значение узлов XML:

For Each objNode in xmlDoc.selectNodes("//description")
    htmlString = htmlString & "<tr><td>" & objNode.text & _
                 "</td><td>test</td></tr>"
Next
person Ansgar Wiechers    schedule 30.03.2016

По сути, это то, что я хотел сделать.

    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.Async = "False"
    xmlDoc.Load("programs.xml")

    strQuery = "/steps/step"

    Set colNodes = xmlDoc.selectNodes( strQuery )

    For Each objNode in colNodes
        strDescription = objNode.SelectSingleNode("description").text
    Next
person Funtriaco Prado    schedule 24.05.2016