0
我有下面的代碼,即插入根元素之前的處理操作的指令:序列化XML處理指令
Document doc = builder.parse(file);
doc.insertBefore(
doc.createProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"annotation.xsl\""),
doc.getDocumentElement());
doc.insertBefore(doc.createProcessingInstruction("oxygen", "NVDLSchema=\"annotation.nvdl\""),
doc.getDocumentElement());
和我使用它來序列化:
FileOutputStream fos = new FileOutputStream(new File(file.getAbsolutePath() + ".out"));
DOMImplementationLS ls = (DOMImplementationLS) builder.getDOMImplementation();
LSOutput lso = ls.createLSOutput();
lso.setByteStream(fos);
ls.createLSSerializer().write(doc, lso);
fos.close();
作爲輸出I得到:
<?xml version="1.0" encoding="UTF-8"?>
<fulltext-document>...</fulltext-document><?xml-stylesheet type="text/xsl" href="annotation.xsl"?><?oxygen NVDLSchema="annotation.nvdl"?>
但是我打算有處理指令之前根元素。我檢查了可能是DOM三不正確(見下文),但一切看起來都不錯。有什麼我錯過了嗎?歡迎任何解決方案。
P.S.我使用Java 1.6.0_27 DOM。如果上面看起來像一個錯誤,歡迎鏈接到錯誤報告。
謝謝你的優雅的解決方案。 –