1

我在(Eclipse RCP 应用程序的)XML 编辑器中有一个 XML 文件,我想将 XML 文档从编辑器到外部位置正确序列化为一个文件。

但是,在导出文件时,我必须首先删除根元素中存在的 xmlns 属性。

因此,当要导出的文档具有LF字符作为行分隔符但如果它具有CRLF行分隔符时,该操作可以正常工作,在生成的文件中,我可以看到行分隔符已被部分编码。

这是要导出的文档示例(假设它具有CRLF作为行分隔符):

<?xml version="1.0" encoding="ISO-8859-1"?>
<document xmlns="http://mynamespace/">
    <entete>
        <rubrique>30</rubrique>
        <meta>
            <description>blablabla</description>
            <keywords>bla bla bla</keywords>
        </meta>

这是结果:

<?xml version="1.0" encoding="ISO-8859-1"?>&#13;
<document>&#13;
    <entete>&#13;
        <rubrique>30</rubrique>&#13;
        <meta>&#13;
            <description>blablabla</description>&#13;
            <keywords>bla bla bla</keywords>&#13;
        </meta>&#13;

正如我们所见,每一行都有一个&#13;字符......

这是我的代码

IDOMModel model = (IDOMModel) targetEditor.getAdapter(IDOMModel.class);
IDOMDocument doc = model.getDocument();
FileOutputStream fos = null;
String xmlns = "";

File documentFile = new File(outputDir, fileName);
fos = new FileOutputStream(documentFile);
doc.getDocumentElement().removeAttribute("xmlns");

DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("LS");

LSSerializer writer = impl.createLSSerializer();
writer.getDomConfig().setParameter("xml-declaration", Boolean.FALSE);

LSOutput output = impl.createLSOutput();
output.setByteStream(fos);

writer.write(model.getDocument(), output);

我尝试了许多不同的选择...

有人知道如何解决吗?

先感谢您。

4

0 回答 0