Я следовал за этим вопросом здесь: Чтение xml данных с использованием classi c ASP для начала, но я сталкиваюсь с ошибкой, и я не знаю, почему это так. Это может быть связано с тем, что DACK
-стандарт файла XML отформатирован или может быть связано с невозможностью загрузить файл.
Я всегда получаю:
Требуемый объект: 'objXMLDo c .documentElement'
Моя функция выглядит так
public function extractValTicketNumber(xmlResponse)
Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
objXMLDoc.async = false
objXMLDoc.load Server.MapPath("/DOCK.xml")
Dim xmlProduct
For Each xmlProduct In objXMLDoc.documentElement.selectNodes("ns1:mt_DG_DACK_V3")
Dim TicketNumber : TicketNumber = xmlProduct.selectSingleNode("ns1:ticketNo").text
Next
response.write("Ticket Nummer: " & Ticketnummer)
end function
И мой XML -файл выглядит так:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns1:mt_DG_DACK_V3 xmlns:ns1="urn:dg:dack">
<ns1:transactionID>012345678900000001</ns1:transactionID>
<ns1:externalTicketID>IN-6543210</ns1:externalTicketID>
<ns1:ticketNo>IN-0123456</ns1:ticketNo>
<ns1:returnMessage>Message successfully received and validated</ns1:returnMessage>
<ns1:returnCode>0</ns1:returnCode>
</ns1:mt_DG_DACK_V3>
Вывод Server.MapPath("/DACK.xml")
является правильным, поэтому файл должен быть загружен. D:\TestIntranet\wwwroot\DOCK.xml
![enter image description here](https://i.stack.imgur.com/cXdwX.png)
Можно ли это как-нибудь проверить? Я не слишком глубоко разбираюсь в classi c ASP.
Я пытался изменить родительский узел на что-то без префикса, testNode
, но все равно та же ошибка, так что я думаю, что это не так связано с этим.
Обновление:
Я просто попытался load
строка в качестве аргумента вместо файла, но ошибка все еще остается:
Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
dim xmlTestString : xmlTestString = "<Product><ProductCode>abc</ProductCode><ProductName>Name</ProductName></Product>"
objXMLDoc.async = False
objXMLDoc.load(xmlTestString)