【问题标题】:How to remove an XML declaration + root tag from string or xml如何从字符串或 xml 中删除 XML 声明 + 根标记
【发布时间】:2016-02-01 10:40:32
【问题描述】:

我有一个带有 xml 声明 + 根标签的 XML,我不需要它 -> 我的目标是将其转换为 JSON,无需 xml 声明和根标签

var xml = XDocument.Parse(renderedOutput);
var xmlWithoutRoot = JsonConvert.SerializeXNode(xml, Newtonsoft.Json.Formatting.None, true);
// convert XML to JSON
var newJson = Newtonsoft.Json.JsonConvert.SerializeObject(xmlWithoutRoot);

在将其序列化为 JSON 之前,如何从 xml 中删除 XML 减速 <?xml version="1.0" encoding="UTF-8"?>

【问题讨论】:

  • 为什么要在 JSON 中序列化 XML(可能是单个大字符串)?
  • 我有一个 xml,我需要它是 json 格式,你是什么意思?

标签: c# json xml json.net


【解决方案1】:

要删除 XML 声明,您可以使用 XElement 代替 XDocument,例如:

var renderedOutput = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
  <root>
   <foo>bar</foo>
 </root>";
var xml = XElement.Parse(renderedOutput);
var xmlWithoutRoot = JsonConvert.SerializeXNode(xml, Newtonsoft.Json.Formatting.None, true);
// convert XML to JSON
var newJson = JsonConvert.SerializeObject(xmlWithoutRoot);
Console.WriteLine(newJson);

dotnetfiddle demo

输出:

"{\"foo\":\"bar\"}"

【讨论】:

  • 好吧,我参加聚会有点晚了,但你为什么要序列化两次。如果你删除你的 var newJson = JsonConvert.SerializeObject(xmlWithoutRoot);你很好。 dotnetfiddle.net/BGtPlL 是您修改后的样本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
相关资源
最近更新 更多