%XML.Reader
Hi guys,
I need help because I have no idea how to proceed further and documentation does not explaining this solution.
I have XML like this:
<?xml version="1.0"?>
<ProductionPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" JobName="10006_8046_L69">
<Barcode>1200002101</Barcode>
<DueDate>31.12.5000 23:59:59</DueDate>
<BasicMaterial>1.0038</BasicMaterial>
<RawMaterial>St37-120</RawMaterial>
<RawMaterialThicknessUnit>mm</RawMaterialThicknessUnit>
<JobNote />
<CreatedBy>stko</CreatedBy>
<ChangedBy>stko</ChangedBy>
<Workplace WorkplaceName="TruLaser 3030 (L49)">
<Barcode>0800000029</Barcode>
<CostCenter />
<Activity>2D-Tafelbearbeitung</Activity>
<MachineName>L49</MachineName>
<MachineType>51</MachineType>
<ControlName>Sin 840D</ControlName>
<ControlType>1</ControlType>
<ProcessingAreaX>3000.00</ProcessingAreaX>
<ProcessingAreaY>1500.00</ProcessingAreaY>
<ProcessingAreaZ>115.00</ProcessingAreaZ>
</Workplace>
Im trying to read all nodes within %XML.Reader and Correlate. For parents it's not problem and I can get it. But I have no idea what to do if I want get Workplace with all his childs.
Class dhr.production.article.xml.productionPackage Extends (%Persistent, %XML.Adaptor) { Parameter XMLNAME = "ProductionPackage"; Property Barcode As %Integer; Property DueDate As %String; Property BasicMaterial As %Float; Property RawMaterial As %String; Property Workplace As dhr.production.article.xml.workplace; }
Class dhr.production.article.xml.workplace Extends (%Persistent, %XML.Adaptor) { Parameter XMLNAME = "Workplace"; Property Barcode As %Integer; Property MachineName As %String; Property MachineType As %String; Property ControlName As %String; Property ControlType As %Integer; }
For writing values from parrent it working fine, but in documentation there is no mention how I can get output from childrens and siblings. I tried object.Workplace.Barcode but does not work at all.
ClassMethod getFiles(pDir As %String, pFileSpec As %String) { SET tRS = ##class(%ResultSet).%New("%Library.File:FileSet"), tSC = tRS.Execute(pDir,pFileSpec) WHILE tRS.Next() { SET filePath = tRS.Get("Name"), lastModified = tRS.Get("DateModified"), fileType = tRS.Get("Type") SET xmlReader = ##class(%XML.Reader).%New(), xmlStatus = xmlReader.OpenFile(filePath) DO xmlReader.Correlate("ProductionPackage", "dhr.production.article.xml.productionPackage") DO xmlReader.Next(.object, .xmlStatus) WRITE !,object.Barcode } QUIT }