Fix XmlElement deserialization for empty elements #118264
Draft
+148
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixed an issue where empty XML elements were not properly deserialized when using
XmlElement
properties, causing subsequent elements to be incorrectly consumed or skipped.Problem
When deserializing XML with empty elements followed by other elements, the
XmlElement
property would returnnull
for empty elements, potentially causing misalignment in the parsing of subsequent elements. For example:Root Cause
The
ReadXmlNode
method inXmlSerializationReader
was returningnull
for empty XML elements instead of creating an appropriate emptyXmlElement
node. This occurred for both self-closing elements (<description/>
) and empty elements with explicit tags (<description></description>
).Solution
Modified the
ReadXmlNode
method to:XmlElement
with the correct local name and namespaceTests Added
Added comprehensive tests to verify:
XmlElement
objects instead ofnull
Fixes #80699.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.