2012-02-09 34 views
2

XMLファイルのインデントに問題があります。特定のサーバーからそれらをロードするたびに、XMLノードはすべて数行の上で混乱します。私はノードを適切にインデントするための簡単なアプリケーションを書いています。それは次のとおりです。XMLファイルの読み込みとインデント

<name>Bob<name> 
<age>24</age> 
<address> 
    <stnum>2</stnum> 
    <street>herp derp st</street> 
</address> 

は、現在、それはとして出てくるだ:私は私にこれらのXMLファイルを提供し、プログラムすることなく、それらを再インデントは年齢を取ると内部プログラムに触れることができないので、

<name>bob</name><age>24</age> 
<address> 
     <stnum>2</stnum><street>herp derp st</street> 
</address> 

、私はこれを行うための簡単なプログラムを書きたいと思っていました。 XMLdocumentライブラリのものを使うと、ノードの情報だけが読み込まれます。だから私の質問は、行ごとにファイルを読んでから、私のためにそれを再び挿入する良い方法は何ですか?すべてのxmlノードは同じです。

ありがとうございました。

+0

はしないでくださいXMLファイルを読み取るコードを記述します。代わりに組み込みの.NET XMLライブラリの1つを使用します。 –

+0

なぜそれは重要ですか? XMLは空白に敏感ではなく、XMLビジュアライザで開くと、あなたのためのフォーマットが処理されます。好奇心の外にちょうど –

+1

:なぜあなたはxmlインデントを気にしますか? – BrokenGlass

答えて

5

あなたはXmlTextWritterクラスを使用することができます。利用できるオンライン・ツールもあります。より具体的には.Formatting = Formatting.Indented。

私はこのブログ記事で見つけたサンプルコードです。 http://www.yetanotherchris.me/home/2009/9/9/formatting-xml-in-c.html

public static string FormatXml(string inputXml) 
{ 
    XmlDocument document = new XmlDocument(); 
    document.Load(new StringReader(inputXml)); 

    StringBuilder builder = new StringBuilder(); 
    using (XmlTextWriter writer = new XmlTextWriter(new StringWriter(builder))) 
    { 
     writer.Formatting = Formatting.Indented; 
     document.Save(writer); 
    } 

    return builder.ToString(); 
} 
0

あなたは、Visual StudioにちょうどオープンXMLを使用している場合は、Ctrlキーを押しながらCtrlキー+ Ctrlキー+ FをK +、それはフォーマットのためにそれだん。 XMLにLINQで

3

、それは基本的にワンライナーです:

public static string Reformat(string xml) 
{ 
    return XDocument.Parse(xml).ToString(); 
} 
0

あなたはまた、XSLTを使用することができます。

として定義XSL持つ
// This XSLT copies everything but idented 

    StringReader sr = new StringReader(xsl); 
    XmlReader reader = XmlReader.Create(sr); 
    XslTransform xslt = new XslTransform(); 
    xslt.Load(reader); 
    xslt.Transform(xmlFileUnidentedPath, xmlFileIdentedPath); 

string xsl = @" 
<?xml version=""1.0""?> 
<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""> 
<xsl:output method=""xml"" omit-xml-declaration=""no"" indent=""yes"" encoding=""US-SCII""/> 
<xsl:strip-space elements=""*""/> 
<xsl:template match=""/""> 
    <xsl:copy-of select="".""/> 
</xsl:template> 
</xsl:stylesheet>"; 
関連する問題