java - 在用Java读取和重写XML时,是否有系统的方法来保存处理指令?

标签 java xml xerces dom4j

我想更新 XML 但保留原始处理指令,大多数时候它只是:

<?xml version="1.0" encoding="UTF-8"?>

但是,我找不到从 com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.JAXPSAXParser(和其他 XML 阅读器)中提取该行的方法,也找不到如何自动将其写入的方法。除了手动读取该行、保留它然后在刷新新 XML 之前先写入它之外,还有其他方法吗?

最佳答案

它的正确名称是 XML 声明;它看起来像一条处理指令,但从技术上讲它不是一条处理指令。

解析总是涉及对文件进行解码(即将八位字节转换为字符);从理论上讲,一旦完成,应用程序就不需要知道它们最初是如何编码的。同样,在序列化文件时,应用程序必须告诉序列化程序要使用什么编码,然后序列化程序负责编写反射(reflect)该编码的 XML 声明。

允许应用程序控制 XML 声明会破坏正确的体系结构分层,并且可能会编写错误的 XML 声明。这部分内容属于解析器层,不属于应用层。

当然,在实践中,有可能获得与实际编码不匹配的 XML 声明,因为没有什么可以阻止您使用对 XML 一无所知的软件编写 XML 声明。人们这样做,他们创建了损坏的内容,然后他们在 StackOverflow 上询问我们如何修复它。我不会鼓励你走这条路。

关于java - 在用Java读取和重写XML时,是否有系统的方法来保存处理指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153592/

相关文章:

java - imagebutton 设置图像大小

python - 实时网页抓取

java - 没有xml的Spring项目

Java Web Start 启动画面不显示

c++ - 使用 xerces (C++) 从模式中获取元素的默认值

c++ - XercesDOMParser 和 XIncludes

java - 当同级元素具有相同名称但不同属性时,如何使用 Java 和 Xerces NodeIterator 获取同级元素

java - 使用 Gin 构建 GWT 时出现 NullPointerException

java - 如何使用 netty 5.0 创建大量连接

java - JUnit4 中的 assumeTrue 是错误的而不是忽略测试