[Gambas-user] Multiple top-level nodes with XmlDocument
Adrien Prokopowicz
adrien.prokopowicz at ...626...
Sun Apr 9 01:06:43 CEST 2017
Le Sat, 08 Apr 2017 17:23:32 +0200, Tobias Boege <taboege at ...626...> a
écrit:
> Hi,
>
> I want to write an XML file like this:
>
> <?xml version="1.0" encoding="utf-8" ?>
> <!-- Introductory comment -->
> <tag />
>
> Note that I have a comment node and an element node at the top-level of
> the
> DOM tree. This [1] gives me the impression that it should be valid XML.
>
> This is straight forward with XmlWriter, but it doesn't seem possible
> with
> XmlDocument since it allows for only one Root node. XmlDocument.Root is
> an
> XmlElement and consequently always renders as
>
> <RootName>
> ...
> </RootName>
>
> which can even produce
>
> <>
> </>
>
> in the output XML file if you set XmlDocument.Root.Name = Null.
>
> Regards,
> Tobi
>
> [1]
> http://stackoverflow.com/questions/14726276/what-is-the-root-node-in-xml
>
Hi Tobias,
A document is technically a node itself, and can have multiple children.
The "Root" property is only defined to be the direct element child of
the document (a document cannot have multiple root elements).
This is how the XmlDocument is represented internally, but the exposed
Gambas class does not inherit XmlNode. I think it is for compatibility
reasons with the old gb.xml, but I have to re-check.
In the meantime, you can work around this limitation like this :
Dim doc As New XmlDocument
doc.FromString("<?xml version=\"1.0\" encoding=\"utf-8\" ?><!--
Introductory comment --><tag />")
doc.Root.TextContent = "Hello world"
Print doc.ToString() 'Correctly renders the comments
Regards,
--
Adrien Prokopowicz
More information about the User
mailing list