PhoenixmlDb.Core
XmlSerializer
Serializes XDM node trees back to XML text, completing the round-trip from (parse) to in-memory XDM to XML output.
#XmlSerializer
Namespace: PhoenixmlDb.Xdm.Parsing
Serializes XDM node trees back to XML text, completing the round-trip from
(parse) to in-memory XDM to XML output.
Round-trip fidelity: The serializer preserves namespace prefixes, attribute order, and namespace declarations from the original parse. Combined with XmlDocumentParser, this enables a parse-modify-serialize workflow where the output closely matches the input (modulo XML declaration differences and whitespace normalization).
Namespace handling: Namespace URIs are stored as interned NamespaceId values in XDM nodes. The serializer uses the provided namespaceResolver function to convert them back to URI strings, and writes namespace declarations based on each element's XdmElement.NamespaceDeclarations.
Node resolution: Since XDM nodes reference their children by NodeId, the serializer requires a nodeResolver function to look up child nodes. This is typically provided by the storage layer.
#Example
Serializing a parsed document back to XML:
var serializer = new XmlSerializer(
nodeResolver: id => nodeTable[id],
namespaceResolver: nsId => namespaceTable.Resolve(nsId),
indent: true);
string xml = serializer.Serialize(parseResult.Document);
#Constructors
##ctor(Func<PhoenixmlDb.Core.NodeId,PhoenixmlDb.Xdm.Nodes.XdmNode>,Func<PhoenixmlDb.Core.NamespaceId,String>,Boolean)
Creates a new XML serializer with the specified resolution functions.
Parameters:
-
nodeResolver— Function to resolveNodeIdreferences toXdmNodeinstances. Returnsnullif the node is not found (which causes it to be silently skipped). -
namespaceResolver— Function to resolveNamespaceIdvalues back to namespace URI strings. Returnsnullif the namespace is not found (treated as no namespace). -
indent— Whentrue(the default), the output XML is indented for readability. Passfalsefor compact output.
#Methods
#Serialize(PhoenixmlDb.Xdm.Nodes.XdmDocument)
Serializes a complete
to an XML string, including the XML declaration.
Parameters:
-
document— The document node to serialize.
Returns: The XML string representation of the document.
#Serialize(PhoenixmlDb.Xdm.Nodes.XdmDocument,IO.TextWriter)
Serializes a complete
to a
, for streaming output without buffering the entire XML string in memory.
Parameters:
-
document— The document node to serialize. -
textWriter— The writer to receive the XML output.
#Serialize(PhoenixmlDb.Xdm.Nodes.XdmNode)
Serializes a single
(and its subtree) to an XML string fragment.
Parameters:
-
node— The node to serialize. If this is an element, its entire subtree is included.
Returns: The XML string representation of the node.