我当前正在修改一段代码,我想知道 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/