Consider a few simple examples of working with XML files using the XML assembly in the Fore language.
To load an XML file:
Initialize an object of one of the available classes: DOMDocument, DOMDocument40, DOMDocument60, FreeThreadedDOMDocument, FreeThreadedDOMDocument60. The first three classes are used work with various MSXML versions (3.0, 4.0, and 6.0 respectively). The last two classes are used if the application is developed that provides for multithreaded access to shared data.
The obtained object can be cast to one of the following interfaces: IXmlDomDocument, IXmlDomDocument2, or IXmlDomDocument3. IXmlDomDocument - contains base properties and methods for working with XML structures; IXmlDomDocument2 - an extension of the IXmlDomDocument interface that supports caching schemes and audit functions, including support for XPath expressions; IXmlDomDocument3 - a development of IXmlDomDocument2 that includes two new methods that are importNode and validateNode.
Using the load or loadXML method of the IXmlDomDocument interface (methods description is provided in MSDN), the user can load an XML document to further work with it.
NOTE. Starting with Prognoz Platform 8.0 working with XML files is executed via MSXML services 6.0.
Sub Sample1;
Var
XMLDoc: IXMLDOMDocument;
XMLName: String = "c:\Data.xml";
Loaded: Boolean;
Begin
XMLDoc := New DOMDocument.Create;
Loaded := XMLDoc.load(XMLName);
If Loaded Then
//Further work with loaded document
//...
XMLDoc.save(XMLName);
End If;
End Sub Sample1;
Sub Sample2(strXML: String);
Var
XMLDoc: IXMLDOMDocument3;
Loaded: Boolean;
Begin
XMLDoc := New DOMDocument60.Create;
Loaded := XMLDoc.loadXML(strXML);
If Loaded Then
//Further work with loaded document
End If;
End Sub Sample2;
To get necessary nodes, use appropriate properties and methods of the IXmlDomDocument interface:
Sub Sample3;
Var
XMLDoc: IXMLDOMDocument;
Loaded: Boolean;
Nodes: IXmlDomNodeList;
Node, NewNode: IXmlDomNode;
NewAttr: IXmlDomAttribute;
Begin
//Load document
//...
If Loaded Then
//Root node
Node := XMLDOc.documentElement;
//Get child nodes of root node
Nodes := Node.childNodes;
//Get required nodes in accordance with XPath query
Nodes := XMLDOc.selectNodes("<XPath query for nodes selection>");
//New node
NewNode := XMLDOc.createNode("element", "Comments", "");
//New attribute for node
NewAttr := XMLDOc.createAttribute("text");
NewAttr.value := "Comment...";
NewNode.attributes.setNamedItem(NewAttr);
//Add created node to tree
Node.appendChild(NewNode);
//Get required node in accordance with XPath query
Node := XMLDOc.selectSingleNode("<XPath query for node selection>");
//...
End Sub Sample3;
See below various examples of working with XML files:
Example |
Working with XML files via MSXML 6.0 |
Working with the CDATA section |
See also: