LINQ To Xml 如何在不格式化的情况下生成 xml
LINQ To Xml how to generate xml without formatting
有没有办法使用 linq to xml 生成 xml 而无需任何格式(空格、换行符等)且无需保存到文件,仅保存在内存中?
我正在将此 xml 发送给某些 api,这是要求。现在我正在使用 string.Replace();
var doc = new XDocument(
new XDeclaration("1.0", "UTF-8", null),
new XElement("request",
new XAttribute("version", "1.0"),
new XElement("m",
new XElement("id", credentials.id),
new XElement("signature"), ""),
new XElement("data",
new XElement("p",
new XAttribute("id", ""),
new XElement("porp",
new XAttribute("name", "c"),
new XAttribute("value", c)),
new XElement("porp",
new XAttribute("name", "a"),
new XAttribute("value", a))))));
var data = doc.Element("request").Element("data").Elements();
string result = string.Concat(data).Trim().Replace("\r\n", "").Replace(" ", "");
var signature = Utils.ComputeSignature(result, credentials.Password);
doc.Element("request").Element("m").Element("signature").Value = signature;
return doc.ToString().Trim().Replace("\r\n", "").Replace(" ", "");
感谢您的帮助!
有几种方法可以实现这一点,但最简单的方法是使用 XNode.ToString
的重载,您可以在其中指定 SaveOptions
:
doc.ToString(SaveOptions.DisableFormatting);
有没有办法使用 linq to xml 生成 xml 而无需任何格式(空格、换行符等)且无需保存到文件,仅保存在内存中?
我正在将此 xml 发送给某些 api,这是要求。现在我正在使用 string.Replace();
var doc = new XDocument(
new XDeclaration("1.0", "UTF-8", null),
new XElement("request",
new XAttribute("version", "1.0"),
new XElement("m",
new XElement("id", credentials.id),
new XElement("signature"), ""),
new XElement("data",
new XElement("p",
new XAttribute("id", ""),
new XElement("porp",
new XAttribute("name", "c"),
new XAttribute("value", c)),
new XElement("porp",
new XAttribute("name", "a"),
new XAttribute("value", a))))));
var data = doc.Element("request").Element("data").Elements();
string result = string.Concat(data).Trim().Replace("\r\n", "").Replace(" ", "");
var signature = Utils.ComputeSignature(result, credentials.Password);
doc.Element("request").Element("m").Element("signature").Value = signature;
return doc.ToString().Trim().Replace("\r\n", "").Replace(" ", "");
感谢您的帮助!
有几种方法可以实现这一点,但最简单的方法是使用 XNode.ToString
的重载,您可以在其中指定 SaveOptions
:
doc.ToString(SaveOptions.DisableFormatting);