Erez
Erez

Reputation: 6446

How to flat xml to one line in c# code?

How to flat xml to one line in c# code ?

Before:

<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>

After:

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

Upvotes: 12

Views: 10153

Answers (5)

Paul Rouleau
Paul Rouleau

Reputation: 849

Depends what you are working with and what output you need... John Skeet's answer works if reading and writing to files. Aleksej Vasinov's answer works if you want xml without the xml declaration.

If you simply want the xml in a string, but want the entire structure of the xml, including the declaration, ie..

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

.. use a StringWriter...

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

Upvotes: 1

Aleksej Vasinov
Aleksej Vasinov

Reputation: 2797

I know, that this is old question, but it helped me to find XDocument.ToString()

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

Check SaveOptions documentaion

Upvotes: 4

Bek Raupov
Bek Raupov

Reputation: 3777

If you cant use LINQ to XML, you can:

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

Upvotes: 7

Jon Skeet
Jon Skeet

Reputation: 1502496

Assuming you're able to use LINQ to XML, and the XML is currently in a file:

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

Upvotes: 13

Anonymous
Anonymous

Reputation: 841

If you have the XML in a string:

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

Upvotes: 5

Related Questions