【发布时间】:2021-04-22 07:28:47
【问题描述】:
我正在使用 spring java 来解析一个 xml。
xml 包含以下元素:
<component xmlns="">
<nonXMLBody classCode="DOCBODY" moodCode="EVN">
<text mediaType="application/pdf" representation="B64">zzz</text>
</nonXMLBody>
</component>
我需要删除属性xmlns=""。
我有以下代码,但属性xmlns="" 仍然存在。
Document dom = null;
try {
dom = xmlDocBuilder.parse(inpSource);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
NodeList nodeComponent = dom.getElementsByTagName("component");
Element element = (Element) nodeComponent.item(0);
element.removeAttribute("xmlns");
【问题讨论】:
-
“没有运气”是对发生的事情以及为什么它没有达到您的期望的非常不准确的描述......
-
@GyroGearless 我的意思是xml就是这样。
xmlns属性还在。 -
xmlns是一个非常特殊的属性,用于定义XML命名空间。xmlns=...定义的未命名命名空间也适用于嵌套在给定元素内的所有元素。您是否尝试删除 XML 中 all 元素的命名空间?你知道 XML 中的命名空间是什么吗?你知道你在问什么吗? -
@Andreas 我的文档中还有一个
xmlns。但是,我只需要删除这个特定的。我正在创建一个cda患者摘要文档,验证器不接受xmlns用于component元素而不是嵌套元素。 -
这意味着您需要重命名元素(
component、nonXMLBody和text)。哦,太糟糕了,元素不能重命名。那么,您需要删除元素并使用正确的限定名称重新创建它们,同时保留所有其他属性和内容。这是很多工作。也许应该考虑修复创建 XML 的代码,以便一开始就做好。