如何在x#代码中将xml扁平化为一行?

时间:2011-04-10 09:04:00

标签: c# .net xml

如何在x#代码中将xml平移到一行?

在:

<CATALOG>
<CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
</CD>
</CATALOG>

后:

<CATALOG><CD><TITLE>Empire Burlesque</TITLE><ARTIST>Bob Dylan</ARTIST>COUNTRY>USA</COUNTRY>....

5 个答案:

答案 0 :(得分:10)

假设您能够使用LINQ to XML,并且XML当前位于文件中:

XDocument document = XDocument.Load("test.xml");
document.Save("test2.xml", SaveOptions.DisableFormatting);

答案 1 :(得分:4)

如果您在字符串中包含XML:

xml.Replace("\n", "").Replace("\r", "")

答案 2 :(得分:3)

如果您无法使用LINQ to XML,您可以:

XmlDocument xmlDoc = new XmlDocument()
xmlDoc.LoadXml("Xml as string");  or xmlDoc.Load(filepath)
xmlDoc.InnerXml -- this should return one liner

答案 3 :(得分:0)

我知道,这是一个老问题,但它帮助我找到了XDocument.ToString()

XDocument doc = XDocument.Load("file.xml");
// Flat one line XML
string s = doc.ToString(SaveOptions.DisableFormatting);

Check SaveOptions documentaion

答案 4 :(得分:0)

取决于您正在使用什么以及您需要什么输出... 如果读取和写入文件,John Skeet 的答案有效。 如果您想要没有 xml 声明的 xml,Aleksej Vasinov 的回答有效。

如果你只是想要一个字符串中的 xml,但想要 xml 的整个结构,包括声明,即..

<?xml version "1.0" encoding="utf-16"?>   <-- This is the declaration ->
<TheRestOfTheXml />

...使用 StringWriter...

XDocument doc = GetTheXml(); // op's xml
var wr = new StringWriter();
doc.Save(wr, SaveOptions.DisableFormatting);
var s = wr.GetStringBuilder().ToString();