org.w3c.dom.ls.LSSerialize - 设置文本换行、缩进大小

org.w3c.dom.ls.LSSerialize - setting text wrapping, indentation size

提问人:rapt 提问时间:2/18/2014 最后编辑:rapt 更新时间:2/18/2014 访问量:471

问:

我正在使用以下代码缩进以字符串形式提供给我的 xml 文档。

如果这很重要,我正在使用 的 JDK 实现。org.w3c.dom.ls

http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/ls/package-summary.html

public String format(String xml) {

    try {
        final InputSource src = new InputSource(new StringReader(xml));
        final Node document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src).getDocumentElement();
        final Boolean keepDeclaration = Boolean.valueOf(xml.startsWith("<?xml"));

    //May need this: System.setProperty(DOMImplementationRegistry.PROPERTY,"com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl");

        final DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
        final DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("LS");
        final LSSerializer writer = impl.createLSSerializer();

        writer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE); // Set this to true if the output needs to be beautified.
        writer.getDomConfig().setParameter("xml-declaration", keepDeclaration); // Set this to true if the declaration is needed to be outputted.

        return writer.writeToString(document);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

有没有办法定义以下任何一项:

  • 缩进大小
  • 是否进行文本换行,
  • 如果我想进行文本换行,则最大行长

我试过查看 javadocs 和在线示例......但找不到任何例子。我只看到使用旧 API 的示例,该 API 现已弃用。

Java 解析 XML 序列化 xerces

评论


答: 暂无答案