【问题标题】:How to code format xml using Java [closed]如何使用 Java 编码格式 xml [关闭]
【发布时间】:2014-01-17 22:14:54
【问题描述】:

我的代码恰好是这样的:

<project>
           <target>
        <for list = ... >
        <if>
                <not>
                </not>
                <then>
                    <fail>
                         </fail>
                </then>
        </if>
        </for>
    </target>
</project>

我希望将其格式化为如下所示:

<project>
    <target>
        <for list = ... >
            <if>
                <not>
                </not>
                <then>
                    <fail>
                    </fail>
                </then>
            </if>
        </for>
    </target>
</project>

我考虑过使用正则表达式,但有没有其他方法可以做到这一点?

【问题讨论】:

标签: java regex xml code-formatting


【解决方案1】:

XML 不是常规语言,正则表达式不适用于通用 XML 文档。

使用任何允许您设置输出格式的 XML 解析器/写入器,例如JSoup 甚至是标准库功能。

【讨论】:

    【解决方案2】:

    大多数 IDE(Eclipse、NetBeans)都会为您做到这一点。

    此外,在线工具也可以在午睡中完成。例如:

    http://www.shell-tools.net/index.php?op=xml_format

    http://www.corefiling.com/opensource/xmlpp.html

    【讨论】:

      【解决方案3】:

      您可以使用 JDK 中包含的 Transformer 类并执行以下操作:

      import javax.xml.transform.OutputKeys;
      import javax.xml.transform.Transformer;
      import javax.xml.transform.TransformerException;
      import javax.xml.transform.TransformerFactory;
      import javax.xml.transform.stream.StreamResult;
      import javax.xml.transform.stream.StreamSource;
      import java.io.BufferedWriter;
      import java.io.File;
      import java.io.FileWriter;
      
      String xml = "<your XML goes here>..."
      
      File file = new File("output.xml");
      
      try (BufferedWriter out = new BufferedWriter(new FileWriter(file))) {
          TransformerFactory factory = TransformerFactory.newInstance();
          Transformer transformer = factory.newTransformer();
          transformer.setOutputProperty(OutputKeys.INDENT, "yes");
          transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
          transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(out));
      }
      

      【讨论】:

        猜你喜欢
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        • 2014-12-02
        • 1970-01-01
        • 2012-08-08
        • 2013-05-23
        • 2011-08-22
        相关资源
        最近更新 更多