PowerBuilder
PowerBuilder
XML Document References
See more XML Examples
This example demonstrates the fact that the entire XML document remains in memory if at least one node is referenced. (It does not need to be the root node.)Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Xml
oleobject loo_XB
li_Success = 0
loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat.Xml")
if li_rc < 0 then
destroy loo_Xml
MessageBox("Error","Connecting to COM object failed")
return
end if
li_Success = loo_Xml.LoadXml("<a><b>BBB</b><c>CCC</c></a>")
Write-Debug loo_Xml.GetXml()
// We have the following XML stored in memory:
// <?xml version="1.0" encoding="utf-8"?>
// <a>
// <b>BBB</b>
// <c>CCC</c>
// </a>
// Get a reference to the 1st child.
loo_XB = loo_Xml.GetChild(0)
// Re-load "xml" with an entirely new document:
li_Success = loo_Xml.LoadXml("<z><x>XXX</x></z>")
// What happens to xB?
// The answer is nothing. xB still points ot the "b" node in the original document, and the entire
// original document remains in memory. We now have two XML documents in memory.
Write-Debug loo_XB.GetXml()
// output is:
// <b>BBB</b>
// Make xB reference the root node of its document:
loo_XB.GetRoot2()
Write-Debug loo_XB.GetXml()
// You can see here that the entire original XML document is still available
// because at least one node in the XML is referenced by a variable.
// The output is:
// <?xml version="1.0" encoding="utf-8"?>
// <a>
// <b>BBB</b>
// <c>CCC</c>
// </a>
// We can also see that "xml" contains an entirely new XML document:
Write-Debug loo_Xml.GetXml()
// <?xml version="1.0" encoding="utf-8"?>
// <z>
// <x>XXX</x>
// </z>
//
destroy loo_XB
destroy loo_Xml