Handling a Document with Multiple Tags with the Same Name Handling a Document with Multiple Tags with the Same Name A given element in XML can contain multiple elements that have the same name; these elements are distinguished from each other by their order. For example, the following is a legitimate XML document: <?xml version="1.0" encoding="UTF-8"?> <Root> <Person> <Name>Able, Andrew</Name> <DOB>1977-10-06</DOB> <Address> <Street>6218 Clinton Drive</Street> <City>Reston</City> <State>TN</State> <Zip>87639</Zip> </Address> <Address> <Street>110 High Street</Street> <City>Zanesville</City> <State>OR</State> <Zip>80719</Zip> </Address> </Person> </Root> It is slightly tricky to map such a document to an InterSystems IRIS class, because each class property must have a unique name. To map such a document to an InterSystems IRIS class, do the following: Set the XMLNAME property parameter as needed to map different class properties to the same XML name. Set the XMLSEQUENCE class parameter equal to 1. As a precaution, this ensures that the mapping respects the order of the properties as listed in the class definition. Make sure that the properties are listed in the class definition in the same order as in the XML document. For example, consider the following class definition: Class GXML.TestSequence.Person Extends (%Persistent, %XML.Adaptor) { Property Name As %Name [ Required ]; Property DOB As %Date(FORMAT = 5, MAXVAL = "+$h") [ Required ]; Property HomeAddress As GXML.TestSequence.Address(XMLNAME = "Address"); Property WorkAddress As GXML.TestSequence.Address(XMLNAME = "Address"); /// If the XMLSEQUENCE = 1, then the order of the XML elements must match the /// order of the class properties. This allows us to deal with XML where the /// same field appears multiple times and is distinguished by the order. Parameter XMLSEQUENCE = 1; } This class definition maps to the XML document shown previously. Note: If XMLSEQUENCE is 1, the XMLIGNOREINVALIDTAG parameter is ignored.