2016-03-30 9 views
1

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

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

Line: 23
Error: Object required: '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 данные:

<?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> 

ответ

0

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

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 
1

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

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