Working with vbscript and a very limited knowledge of XML files, I'm trying to create a function that gets several pieces of information from the MaterialPosting element of an XML file.
As long as I stick to elements that 1) are always present in the XML and 2) have values directly under the /JobInfo/MaterialPosting element, such as StockCode, I can get what I need but I'm having trouble retrieving the values of items that are one level deeper, such as Bins and Serials. I was able to figure out how to get the value of the Bins/Bin element (see line 21 of the code below). However, it doesn't work for serials because the Serials element does not always exist.
After spending the better part of a day with the Microsoft docs on XML Dom, my head is spinning and I still don't get it. The code below is my latest attempt. It returns an error of "object doesn't support this property or method" at line 11.
How can I check to see if the element called Serials exists in my XML and, if the Serial element exists, retrieve its value?
Many thanks, in advance, for your help!
Dim objDom, objNodeList, Counter, myXML
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objNodeList = objDom.SelectNodes ("//JobInfo/MaterialPosting")
If objNodeList.length > 0 then
' Loop through each of the MaterialPosting elements
For Counter = 0 To objNodeList.length - 1
aSerialNode = objNodeList(Counter).SelectSingleNode("//JobInfo/MaterialPosting/Serials")
If aSerialNode = nothing Then
msgbox "no serial node"
msgbox "serial node found"
MyXML = MyXML & objNodeList(Counter).SelectSingleNode("MStockCode").Text & Chr(255) &_
objNodeList(Counter).SelectSingleNode("MLot").Text & Chr(255) &_
objNodeList(Counter).SelectSingleNode("MQtyIssued").Text & Chr(255) &_
objNodeList(Counter).SelectSingleNode("./MBins/Bin").Text & vbCrLf
' objNodeList(Counter).SelectSingleNode("./MSerials/Serial").Text & vbCrLf
My XML file looks like this: