小编pc_*_*c__的帖子

在 jdk 11 中序列化 xml 文档时,LSSerializer 缺少 xmlns 属性(在 jdk 8 中工作正常)

我正在使用 LSSerializer `linked below' 来序列化我的应用程序中的 xml 文档,现在我从 java 8 迁移到 11,我发现序列化的 xml 文档缺少默认的 xml 命名空间属性(“xmlns”)。似乎 jdk 8 中使用的 LSSerializer 实现已被 jdk 9 取代。并且新的实现在序列化 DOM 文档时错过了 xmlns 属性(一个错误?)

为了说明这个问题,以下代码在 java 11 中编译和运行时会遗漏 xml 中的 xmlns 属性(它在 java 8 中工作正常)

import org.w3c.dom.*;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.*;


public class Test {
    public static void main(String[] args) {
        String xml = "<bio><body xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\"><p>test</p></body></bio>";
        try {
            InputStream inputStream = new ByteArrayInputStream(xml.getBytes("UTF-8"));

            DocumentBuilder …
Run Code Online (Sandbox Code Playgroud)

java xml java-11

7
推荐指数
1
解决办法
417
查看次数

标签 统计

java ×1

java-11 ×1

xml ×1