Monday, April 10, 2017

AX 2012: Reading XML Nodes under specific tag through X++

XML to read




















X++ Code 

For above XML structure, I will read all nodes exist within each InstructorAPIModel node. The getElementsByTagName() method of XmlDocument class can be used which returns XmlNodeList which can then be iterated to get node's values.

  XmlDocument doc = new XmlDocument();
XmlNodeList         apiModelList;
XmlNodeListIterator iterator;
XmlElement          apiModel;
XmlElement          firstName;
XmlElement          lastName;

doc.loadXml(_xmlMsg);

apiModelList = doc.getElementsByTagName('InstructorApiModel');
iterator= new XmlNodeListIterator(apiModelList);

while (iterator.moreValues())
{
    apiModel = iterator.value();
        
    firstName = apiModel.getNamedElement('FirstName');
    if (firstName)
    {
        info(strFmt("First Name: %1", firstName.text()));
    }
        
    lastName = apiModel.getNamedElement('LastName');
    if (lastName)
    {
        info(strFmt("Last Name: %1", lastName.text()));
    }

    iterator.nextValue();
}