2010-02-26 109 views
4

我目前使用Syntax Highlighter在页面上显示XML或SOAP消息。对于已经正确格式化的邮件(换行符,缩进等)来说,这种方式工作正常。但是,如果我有一个XML字符串,如:C#或JavaScript代码格式化程序

string xml = "<doc><object><first>Joe</first><last>Smith</last></object></doc>"; 

我会写的字符串的页面和JavaScript荧光笔可以正确的语法高亮显示的字符串,但它是所有在一行。

是否有C#字符串格式化程序或某些语法高亮库,具有可以插入换行符,缩进等的“智能”缩进功能...?

回答

2

由于这是一个字符串,增加换行符和缩进会改变变量xml的实际,这是你希望你的代码格式化呢!

注意,您可以写入页面,这样之前格式化C#中的XML:

using System; 
using System.IO; 
using System.Text; 
using System.Xml; 

namespace XmlIndent 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string xml = "<doc><object><first>Joe</first><last>Smith</last></object></doc>"; 
      var xd = new XmlDocument(); 
      xd.LoadXml(xml); 
      Console.WriteLine(FormatXml(xd)); 
      Console.ReadKey(); 
     } 


     static string FormatXml(XmlDocument doc) 
     { 
      var sb = new StringBuilder(); 
      var sw = new StringWriter(sb); 
      XmlTextWriter xtw = null; 
      using(xtw = new XmlTextWriter(sw) { Formatting = Formatting.Indented }) 
      { 
       doc.WriteTo(xtw); 
      } 
      return sb.ToString(); 
     } 
    } 
} 
+0

的Visual Studio代码格式(按Ctrl + K,d)通过增加缩进和换行符格式文档。同样的事情不是吗? – nivlam 2010-02-26 13:36:30

+0

不,你会发现它不会格式化字符串'XML =“史密斯”;'就好像它是XML,对我的回答所陈述的理由。 – RedFilter 2010-02-26 13:43:04

+0

我的意思是它会格式化你的文档。你提到改变变量将是一件坏事。我正在比较改变一个“代码文件”。 – nivlam 2010-02-26 13:45:31