我想更新XML但保留原始处理指令,大多数情况下只是:
<?xml version="1.0" encoding="UTF-8"?>
但是我找不到从com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.JAXPSAXParser(和其他XML读取器)中提取行的方法,或者如何自动将其携带到写入中。除了手动读取该行,还有什么其他方法可以保留,然后在刷新新XML之前先将其写入?
答案 0 :(得分:2)
它的专有名称是XML声明;它看起来像一个处理指令,但从技术上讲不是一个。
解析总是涉及对文件进行解码(即,将八位字节转换为字符);理论完成后,应用程序无需知道它们最初是如何编码的。同样,在序列化文件时,应用程序必须告诉序列化程序要使用哪种编码,然后序列化程序负责编写反映该编码的XML声明。
允许应用程序对XML声明进行控制将破坏适当的体系结构分层,并有可能编写错误的XML声明。内容的这一部分属于解析器层,而不是应用程序层。
当然,实际上,有可能获得与实际编码都不匹配的XML声明,因为没有什么可以阻止您使用对XML一无所知的软件编写XML声明。人们这样做,他们创建了损坏的内容,然后他们在StackOverflow上问我们如何修复它。我不会鼓励你走那条路。