我有一个现有的xml文件,如下所示
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person xmlns="http://Person">
<name first="abc1",last="xyz1"/>
<name first="abc2",last="xyz2"/>
</Person>
我需要动态添加名称元素。我按照以下描述实现了这个
1)解组xml文件
InputStream inputStream = new FileInputStream(xmlFile);
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
Unmarshaller u = jaxbContext.createUnmarshaller();
JAXBElement<Person> root = (JAXBElement<Person>) u.unmarshal(xmlFile);
Person personObj = root.getValue();
2)添加名称元素
List<JAXBElement> nameList = personObj.getNameElement();
Name name = new Name ();
name.setFirst("abc3");
name.setLast("xyz3");
Name name1 = new Name ();
name1.setFirst("abc4");
name1.setLast("xyz4");
JAXBElement<Name> nameEle = new JAXBElement<Name>(new QName("Name"), Name.class, name);
JAXBElement<Name> nameEle1 = new JAXBElement<Name>(new QName("Name"), Name.class, name1);
nameList.add(nameEle);
nameList.add(nameEle1);
3)编组文件
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(personObj, newXMLFile);
现在编组的xml向新添加的元素显示命名空间。我想知道是否有办法删除此命名空间
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person xmlns="http://Person">
<name first="abc1",last="xyz1"/>
<name first="abc2",last="xyz2"/>
<name xmlns:ns2="http://Person" xmlns="" first="abc3",last="xyz3"/>
<name xmlns:ns2="http://Person" xmlns="" first="abc4",last="xyz4"/>
</Person>
我想将名称空间保留在根元素(Person)中,因为原始xml具有根元素的名称空间