java - 使用 DocumentBuilderFactory 将 Xml 文档转换为 DOM 对象

标签 java xml dom parsing

我当前正在修改一段代码,我想知道 XML 的格式化方式(制表符和间距)是否会影响将其解析到 DocumentBuilderFactory 类中的方式。

本质上,问题是......我可以将一个没有空格的大长字符串传递到 DocumentBuilderFactory 中,还是需要以某种方式对其进行格式化?

提前致谢,下面是来自 Oracle 网站的类定义。

DocumentBuilderFactory类

“定义一个工厂 API,使应用程序能够获取从 XML 文档生成 DOM 对象树的解析器。”

最佳答案

文档会有所不同。制表符和新行将转换为文本节点。您可以在 DocumentBuilderFactory 上使用以下方法消除这些:

但为了使其正常工作,您必须设置 DOM 解析器来根据 DTD 或 xml 架构验证内容。

或者,您可以使用如下内容以编程方式自行删除多余的空格:

public static void removeEmptyTextNodes(Node node) {
    NodeList nodeList = node.getChildNodes();
    Node childNode;
    for (int x = nodeList.getLength() - 1; x >= 0; x--) {
        childNode = nodeList.item(x);
        if (childNode.getNodeType() == Node.TEXT_NODE) {
            if (childNode.getNodeValue().trim().equals("")) {
                node.removeChild(childNode);
            }
        } else if (childNode.getNodeType() == Node.ELEMENT_NODE) {
            removeEmptyTextNodes(childNode);
        }
    }
}

关于java - 使用 DocumentBuilderFactory 将 Xml 文档转换为 DOM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404391/

相关文章:

java - 从另一个具有相同锁的同步块(synchronized block)调用同步块(synchronized block)

java - 如何使用非抽象类实现 ActionListener? java

c# - XDocument 到对象列表

xml - 无法将 TableLayout 拉伸(stretch)到屏幕宽度

javascript - 是否可以使 HTML 元素属性不可变?

Java:输入两个错误值后程序崩溃

java - JAXB @XmlElements 命令

javascript通过鼠标悬停滚动对象

javascript - jQuery:选择指定元素之前的最后一个匹配项

Java - 为外部库中的类定义公共(public)接口(interface)