在Java中读取和重写XML时,有没有系统的方法来保存处理指令?

问题描述 投票:1回答:1

我想更新XML但保留原始处理指令,大部分时间它只是:

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

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

java xml xerces dom4j
1个回答
2
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.