我想更新 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/