是否有用于可控XML格式化的样式表或Windows命令行工具,特别是将属性设置为每行一行?

我正在搜索一个XSLT或命令行工具(或C#代码,可以制成一个命令行工具等),Windows将进行XML漂亮打印.具体来说,我想要一个有能力将属性放在一行的能力,如:
<Node>
   <ChildNode 
      value1='5'
      value2='6'
      value3='happy' />
</Node>

它不一定是这样的,但是我想将它用于具有数十个属性的节点的XML文件,并将它们扩展到多行,使得它们更容易阅读,编辑和文本差异.

注意:我认为我的首选解决方案是可以通过C#方法的XSLT表,尽管Windows命令行工具也很好.

这是一个小的C#示例,可以直接由您的代码使用,或内置到一个exe中,并在comand行中调用“my.xml from.xml to.xml”:
static void Main(string[] args) {
        XmlWriterSettings settings = new XmlWriterSettings {
            NewLineHandling = NewLineHandling.Entitize,NewLineOnAttributes = true,Indent = true,IndentChars = "  ",NewLineChars = Environment.NewLine
        };
        using (XmlReader reader = XmlReader.Create(args[0]))
        using (XmlWriter writer = XmlWriter.Create(args[1],settings)) {
            writer.WriteNode(reader,false);
            writer.Close();
        }
    }

样品输入:

<Node><ChildNode value1='5' value2='6' value3='happy' /></Node>

示例输出(请注意,您可以删除<?xml ... with settings.OmitXmlDeclaration):

<?xml version="1.0" encoding="utf-8"?>
<Node>
  <ChildNode
    value1="5"
    value2="6"
    value3="happy" />
</Node>

请注意,如果您想要一个字符串而不是写入一个文件,只需与StringBuilder交换:

StringBuilder sb = new StringBuilder();
using (XmlReader reader = XmlReader.Create(new StringReader(oldXml)))
using (XmlWriter writer = XmlWriter.Create(sb,settings)) {
    writer.WriteNode(reader,false);
    writer.Close();
}
string newXml = sb.ToString();

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念