我正在搜索一个XSLT或命令行工具(或C#代码,可以制成一个命令行工具等),Windows将进行XML漂亮打印.具体来说,我想要一个有能力将属性放在一行的能力,如:
<Node> <ChildNode value1='5' value2='6' value3='happy' /> </Node>
它不一定是这样的,但是我想将它用于具有数十个属性的节点的XML文件,并将它们扩展到多行,使得它们更容易阅读,编辑和文本差异.
这是一个小的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 举报,一经查实,本站将立刻删除。