java dom忽略doctype_使用DOM解析xml,DOCTYPE被删除

在使用Java DOM解析XML并保存时,发现DOCTYPE被删除。代码中通过DocumentBuilder解析XML,然后用Transformer将DOM写回文件,但DOCTYPE部分丢失。尽管尝试了设置OutputKeys.STANDALONE和使用不同的方法,DOCTYPE仍然无法保留。寻求解决方案以在修改XML内容的同时保持DOCTYPE。
摘要由CSDN通过智能技术生成

在编辑xml时,java的dom如何删除doctype?

得到了这个xml文件:

]>

test1

test1

test1

我的功能很基本:

public static void EditStationName(int id, InputStream is, String path, String name) throws ParserConfigurationException, SAXException, IOException, TransformerFactoryConfigurationError, TransformerException{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document dom = builder.parse(is);

Element e = dom. getElementById(String.valueOf(id));

e.setTextContent(name);

// Write the DOM document to the file

Transformer xformer = TransformerFactory.newInstance().newTransformer();

FileOutputStream fos = new FileOutputStream(path);

Result result = new StreamResult(fos);

Source source = new DOMSource(dom);

xformer.setOutputProperty(

OutputKeys.STANDALONE,"yes"

);

xformer.transform(source, result);

}

它正在工作,但是文档类型被删除了!我只得到了整个文档,却没有doctype部分,这对我来说很重要,因为它允许我按id进行检索!我们如何保留doctype?为什么会擦除它?我用outputkeys或omImpl.createDocumentType尝试了许多解决方案,但这些都不起作用…

谢谢 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值