java—如何从xml元素中删除属性?

yxyvkwin  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(377)

我正在使用springjava解析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");
xqk2d5yq

xqk2d5yq1#

基于@andreas评论和这个解决方案,我找到了我的解决方案。
正如我在上面的评论设置,我有另一个 xmlns 属性在我的xml文档的开头 xmlns="urn:hl7-org:v3" .
因此,为了在创建新元素时在新元素中具有相同的命名空间,我使用以下代码:

Element root = dom.getDocumentElement();
Element componetEl = dom.createElement("component");
componetEl.setAttribute("xmlns", "urn:hl7-org:v3"); //this is the solution
root.appendChild(componetEl);
Element nonXMLBodyEl = dom.createElement("nonXMLBody");
nonXMLBodyEl.setAttribute("xmlns", "urn:hl7-org:v3"); //this is the solution
...
componetEl.appendChild(nonXMLBodyEl);
Element textEl = dom.createElement("text");
textEl.setAttribute("xmlns", "urn:hl7-org:v3"); //this is the solution
nonXMLBodyEl.appendChild(textEl);

...
因此,现在我得到的xml是:

<component>
      <nonXMLBody classCode="DOCBODY" moodCode="EVN">
         <text mediaType="application/pdf" representation="B64">zzz</text>
      </nonXMLBody>
 </component>

相关问题