Fix XML serialization of xs:list elements to respect white-space separation #118265
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.
When serializing
string[]properties with[XmlText]attribute, array elements were being concatenated without spaces, and deserialization was treating the entire content as a single element instead of splitting on whitespace as required by XML Schema list datatype specifications.Problem
Expected Behavior
According to XML Schema list datatypes, elements should be space-separated:
Solution
Serialization fix: Modified
ReflectionXmlSerializationWriter.WriteText()to detectstring[]arrays and join them with spaces usingstring.Join(" ", stringArray)before writing the text content.Deserialization fix: Modified
ReflectionXmlSerializationReader.WriteMemberText()to detectstring[]arrays and split space-separated text usingtextValue.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries).Test update: Updated the existing
XML_TypeWithXmlTextAttributeOnArray()test to expect the correct behavior where["val1", "val2"]serializes as"val1 val2"and deserializes back to["val1", "val2"].The changes are minimal and surgical, affecting only the specific case of
string[]properties with[XmlText]attribute, ensuring existing functionality remains unchanged.Fixes #115837.
💡 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.