0

response2.xml というファイルに次の xml があります。

    <?xml version="1.0"?>  
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">  
<S:Body><ns2:commonServiceResponse xmlns:ns2="http://webservice.mas.gepics.ab.com">  
<return>  
<responseData><?xml version="1.0" encoding="utf-8"?>  
<tnsa:GetABQData xmlns:tns="http://www.ab.com/ns/ABQ/ABQSchemaExtensions"
        xmlns:tnsa="http://www.ab.com/ns/ABQ/ABQMessageStandard" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.ab.com/ns/ABQ/ABQMessageStandard ABQSchemaHeaders.xsd"
        releaseID="string" versionID="string">  
        <tnsa:ApplicationArea>  
                <tnsa:CreationDateTime>2012-04-03T08:53:20</tnsa:CreationDateTime>  
                <tnsa:ABQHeader>  
                        <tnsa:VehicleAssemblyPlant>CHW</tnsa:VehicleAssemblyPlant>  
                        <tnsa:Source>GEPICS</tnsa:Source>  
                        <tnsa:Destination>SEP</tnsa:Destination>  
                        <tnsa:TransactionCode>  
                                <tnsa:Transaction>TACK</tnsa:Transaction>  
                        </tnsa:TransactionCode>  
                        <tnsa:TriggerID>0</tnsa:TriggerID>  
                        <tnsa:InputDevice>MAS01</tnsa:InputDevice>  
                        <tnsa:OutputDevice>MASOUT01</tnsa:OutputDevice>  
                </tnsa:ABQHeader>  
        </tnsa:ApplicationArea>  
        <tnsa:DataArea>  
                <tnsa:Get>  
                        <tnsa:Expression>string</tnsa:Expression>  
                </tnsa:Get>  
                <tnsa:ABQData releaseID="string">  
                        <tnsa:ABQSpecific>  
                                <tnsa:Vehicle>  
                                        <tns:GEPICSTrgPrimaryKey>101718664</tns:GEPICSTrgPrimaryKey>  
                                        <tns:GEPICSTrgSecondaryKey>   </tns:GEPICSTrgSecondaryKey>  
                                </tnsa:Vehicle>  
                                <tns:BroadCastData>  
                                        <tns:DataTagID>231</tns:DataTagID>  
                                        <tns:DataLength>34</tns:DataLength>  
                                        <tns:DataString>ADDORDER1017186643G1SE51X3AS118601</tns:DataString>  
                                </tns:BroadCastData>  
                        </tnsa:ABQSpecific>  
                </tnsa:ABQData>  
        </tnsa:DataArea>  
</tnsa:GetABQData>  

</responseData>  
<success>true</success>  
</return>  
</ns2:commonServiceResponse>  
</S:Body>  
</S:Envelope>  

ファイルからノードを読み取るために、5.vbs という次の vbscript があります。

Set oXMLDoc = CreateObject("MSXML2.DOMDocument.4.0")   
oXMLDoc.async = False   
oXMLDoc.load ("response2.xml")   
oXMLDoc.setProperty "SelectionLanguage", "XPath"   
oXMLDoc.setProperty "SelectionNamespaces", "xmlns:S='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns2='http://webservice.mas.gepics.ab.com' xmlns:tnsa='http://www.ab.com/ns/ABQ/ABQMessageStandard'"  
WScript.Echo oXMLDoc.selectSingleNode("//S:Envelope//S:Body//ns2:commonServiceResponse//return//responseData").text  

コマンド cscript 5.vbs を実行すると、次のエラー ランタイム エラーが発生します: オブジェクトが必要です: 'oXMLDoc.selectSingleNode(...)'

何をしても、tnsa:GetABQData ツリーのノードを選択できません。

任意の提案 よろしくお願いします

4

1 に答える 1

0

わかりにくいかもしれませんが、そこには XML がありません。それは HTML エンコードされた XML です。XML パーサーで解析する場合は、デコードする必要があります。この関数を使用して、最初にデコードできます。

http://psacake.com/web/func/htmldecode_function.htm

Private Function HTMLDecode(byVal encodedstring)
    Dim tmp, i
    tmp = encodedstring
    tmp = Replace( tmp, """, chr(34) )
    tmp = Replace( tmp, "<"  , chr(60) )
    tmp = Replace( tmp, ">"  , chr(62) )
    tmp = Replace( tmp, "&" , chr(38) )
    tmp = Replace( tmp, " ", chr(32) )
    For i = 1 to 255
        tmp = Replace( tmp, "&#" & i & ";", chr( i ) )
     Next
    HTMLDecode = tmp
End Function
于 2012-04-09T23:10:46.543 に答える