如何将XDocument序列化结果包装为指定XML格式?
解决方案
你需要在生成的XML外层包裹<results>节点,并添加XML声明和指定命名空间,修改后的代码如下:
// 按原逻辑解析JSON为XDocument var originalXml = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader( Encoding.ASCII.GetBytes(responseString.ToString()), new XmlDictionaryReaderQuotas())); // 创建带指定命名空间的results根节点 XNamespace xsdNs = "http://www.w3.org/2001/XMLSchema"; XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance"; var resultsElement = new XElement("results", new XAttribute(XNamespace.Xmlns + "xsd", xsdNs), new XAttribute(XNamespace.Xmlns + "xsi", xsiNs)); // 将原root节点添加到results节点下 resultsElement.Add(originalXml.Root); // 创建包含XML声明的最终XDocument var finalXml = new XDocument( new XDeclaration("1.0", null, null), resultsElement);
关键说明:
- 保留原有JSON转XML的核心逻辑,先得到包含
<root>节点的文档 - 手动构造
<results>节点并添加要求的两个命名空间属性 - 将原
<root>节点作为子节点嵌入<results>中 - 显式添加XML声明,确保输出包含
<?xml version="1.0"?>
这样生成的XML就会完全匹配你预期的格式。
内容的提问来源于stack exchange,提问作者pujari siri
相关产品推荐
相关产品推荐

