|
|
|
|
|
|
|
|
|
|
- Overview
- Example for reading an XML document
- Example for creating an XML document
- Example for modifying an XML document
Usage example of the XML types
The following examples is used to handle an XML document via the xmlDocument and cmlNode variables, ... Example for reading an XML document NameXMLFile is string
NameXMLFile = fSelect("*.*", "File.xml", "Select an XML file", ...
"XML file (*.xml)" + TAB + "*.xml" + CR + "All" + TAB + "*.*")
IF NameXMLFile <> "" THEN
xmlDoc is xmlDocument
xmlDoc = XMLOpen(NameXMLFile, fromFile)
IF xmlDoc..RootNode.Count < 1 THEN
Info("The XML file " + NameXMLFile + " contains no root node")
ELSE
FOR EACH ARootNode OF xmlDoc..RootNode
DetailsNodeAndSubNodes(ARootNode)
END
END
END
PROCEDURE DetailsNodeAndSubNodes(LOCAL anXMLNode is xmlNode, nLevel is int=0)
sAttributes is string = ""
IF anXMLNode..Attribute.Count > 0 THEN
FOR EACH aAttribute OF anXMLNode..Attribute
sAttributes += " " + UnicodeToAnsi(anAttribute..Name) + "=""" + ...
UnicodeToAnsi(anAttribute..Value) + """"
END
END
Trace(RepeatString("-", 2*nLevel) + "<" + UnicodeToAnsi(anXMLNode..Name) + sAttributes + "> " + ...
UnicodeToAnsi(anXMLNode..Text))
FOR EACH anXMLSubNode OF anXMLNode
IF NOT UnicodeToAnsi(anXMLSubNode..Name) ~= "" THEN
DetailNodeAndSubNodes(anXMLSubNode, nLevel+1)
END
END
Trace(RepeatString("-", 2*nLevel) + "</" + anXMLNode..Name + ">")
Example for creating an XML document
xmlInvoice is xmlDocument,description="Model_Invoice"
xmlANode is xmlNode
xmlANode..Name = "LIST_OF_INVOICES"
Add(xmlInvoice, xmlANode)
xmlANode..Name = "INVOICE"
Add(xmlInvoice.LIST_OF_INVOICES, xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].Number = 1
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].TOTAL = 172.6
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].VAT = 19.6
xmlANode..Name = "INVOICE_LINE"
Add(xmlInvoice.LIST_OF_INVOICES.INVOICE[1], xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].INVOICE_LINE[1].Description = ...
"Description line 1 invoice 1"
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].INVOICE_LINE[1].AMOUNT = 84.25
xmlANode..Name = "INVOICE_LINE"
Add(xmlInvoice.LIST_OF_INVOICES.INVOICE[1], xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].INVOICE_LINE[2].Description = ...
"Description line 2 invoice 1"
xmlInvoice.LIST_OF_INVOICES.INVOICE[1].INVOICE_LINE[2].AMOUNT = 88.35
xmlANode..Name = "INVOICE"
Add(xmlInvoice.LIST_OF_INVOICES, xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].Number = 2
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].TOTAL = 225.65
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].VAT = 5.5
xmlANode..Name = "INVOICE_LINE"
Add(xmlInvoice.LIST_OF_INVOICES.INVOICE[2], xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[1].Description = ...
"Description line 1 invoice 2"
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[1].AMOUNT = 52.35
xmlANode..Name = "INVOICE_LINE"
Add(xmlInvoice.LIST_OF_INVOICES.INVOICE[2], xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[2].Description = ...
"Description line 2 invoice 2"
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[2].AMOUNT = 14.45
xmlANode..Name="INVOICE_LINE"
Add(xmlInvoice.LIST_OF_INVOICES.INVOICE[2], xmlANode)
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[3].Description = ...
"Description line 3 invoice 2"
xmlInvoice.LIST_OF_INVOICES.INVOICE[2].INVOICE_LINE[3].AMOUNT = 158.85
Info(XMLBuildString(xmlInvoice))
Example for modifying an XML document
MyXMLDoc is xmlDocument,description="NEWS"
MyXMLDoc = XMLOpen(gsPathXMLFile, fromFile)
IF ErrorOccurred = True THEN
RESULT "Error detected when opening the XML: " + ErrorInfo()
ELSE
Trace("XML file currently processed: " + gsPathXMLFile)
END
NodeRSS is xmlNode,description="NEWS.rss.channel.item"
FOR EACH NodeRSS OF MyXMLDoc.rss.channel ON item
IF NodeRSS.title = sFormer_Title THEN
Trace("The news was found, we are going to modify it")
NodeRSS.title = sNew_Title
NodeRSS.description = sNew_Comment
NodeRSS.link = sNew_Url
END
END
XMLSave(MyXMLDoc, gsPathXMLFile)
RETURN ""
This page is also available for…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|