微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有用于可控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();

原文地址:https://www.jb51.cc/xml/292168.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。