You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java从11升级到17对DOM解析XML设置默认命名空间的影响及问题咨询

Java从11升级到17对DOM解析XML设置默认命名空间的影响及问题咨询

大家好,我最近碰到一个DOM解析XML的奇怪问题,折腾半天没搞明白,想请教下各位大佬:

先看我要处理的原始XML内容:

<TestFile>
    <TestHeader>
        <FileVersion>2.00</FileVersion>
        <FileCountry>GB</FileCountry>
        <FileRegion>LND</FileRegion>
    </TestHeader>
</TestFile>

之前在早期Java 8版本里,我是用DOM API给根节点设置默认命名空间的,代码如下:

MyDoc.getDocumentElement().setAttribute("xmlns", this.NameSpaceAsString);

那时候生成的XML是正常的,只有根节点带上了指定的命名空间,子节点不会乱加额外属性:

<TestFile xmlns="mynamespace.com">
<TestHeader>
    <FileVersion>2.00</FileVersion>
    <FileCountry>GB</FileCountry>
    <FileRegion>LND</FileRegion>
</TestHeader>

但升级到Java 11之后,问题出现了——现在生成的XML里,顶层的两个节点都带上了默认命名空间,而且TestHeader的命名空间是空的:

<TestFile xmlns="mynamespace.com">
<TestHeader xmlns=" ">
    <FileVersion>2.00</FileVersion>
    <FileCountry>GB</FileCountry>
    <FileRegion>LND</FileRegion>
</TestHeader>

我实在搞不懂是什么变化导致的,明明只给根节点设置属性,怎么会影响到子节点?而且还多出个空的命名空间,有没有大佬知道这是Java版本升级中DOM API的什么改动引发的呀?

备注:内容来源于stack exchange,提问作者TheUltimateHack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:38:06