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

前端之家收集整理的这篇文章主要介绍了是否有用于可控XML格式化的样式表或Windows命令行工具,特别是将属性设置为每行一行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在搜索一个XSLT或命令行工具(或C#代码,可以制成一个命令行工具等),Windows将进行XML漂亮打印.具体来说,我想要一个有能力将属性放在一行的能力,如:
  1. <Node>
  2. <ChildNode
  3. value1='5'
  4. value2='6'
  5. value3='happy' />
  6. </Node>

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

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

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

样品输入:

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

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Node>
  3. <ChildNode
  4. value1="5"
  5. value2="6"
  6. value3="happy" />
  7. </Node>

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

  1. StringBuilder sb = new StringBuilder();
  2. using (XmlReader reader = XmlReader.Create(new StringReader(oldXml)))
  3. using (XmlWriter writer = XmlWriter.Create(sb,settings)) {
  4. writer.WriteNode(reader,false);
  5. writer.Close();
  6. }
  7. string newXml = sb.ToString();

猜你在找的XML相关文章