不知道大家遇到这种问题没有
对于这样一个XML文件的格式<Model xmlns="http://www.esi-group.com/ns/VAOne" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.esi-group.com/ns/VAOne http://www.esi-group.com/xml/schemas/VAOne/2010/VAOne.xsd" name="" note="">
用dom4j写的时候,像rootElement.addAttribute()方法写的话是显示不出xmlns这个属性的
google了一下知道要这么写Element rootElement = document.addElement("Model",
"http://www.esi-group.com/ns/VAOne");
rootElement.addNamespace("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
rootElement
.addAttribute(
"xsi:schemaLocation",
"http://www.esi-group.com/ns/VAOne http://www.esi-group.com/xml/schemas/VAOne/2010/VAOne.xsd");可问题出来了,这样一来为根元素制定了明空间,可下面的子节点都自动生成了个xmlns=""属性,就像这样  <?xml version="1.0" encoding="UTF-8" ?> 
- <Model xmlns="http://www.esi-group.com/ns/VAOne" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.esi-group.com/ns/VAOne http://www.esi-group.com/xml/schemas/VAOne/2010/VAOne.xsd" name="" note="">
  <Version xmlns="">1.5.0.6</Version> 
  <Spectra xmlns="" /> 
  </Model>
请问一下怎么才能去掉子节点的这些多余属性呢?
第一次在csdn论坛发帖,也是刚刚工作,希望各位前辈帮帮忙,谢了。

解决方案 »

  1.   

    这个问题是许多初次使用dom4j生成xml文件时可能都会遇到的问题,也是在定义缺省名称空间时遇到的常见问题,解决的办法其实也很简单:如果你要为某个元素节点上定义一个缺省的名称空间,可直接在定义元素element的时候就应该为其指定一个不带前缀的名称空间,如:
    element.addElement(name,url);//name为你的新定义元素节点名,URL就是你的名称空间。
    当然,一般更多的是在根元素上定义缺省的名称空间,此时定义格式如下:
    Element root=document.addElement(name,url);//name为你的新定义元素节点名,URL就是你的名称空间。 
    特别注意:不要通过类似于element.addNamspace("",url)这样的方式来为某个元素节点指定缺省名称空间,这样的做法就会出现你所描述的上述问题。