我试图根据定义的模式将对象中的数据编组到xml文件中.但是,当我打印出xml文件时,我在xml标签上收到了额外的注释.有没有办法摆脱额外的命名空间注释(即ns2)
这是我从编组中收到的xml的一个例子.
<?xml version="1.0" encoding="UTF-8" standalone="yes">
<root xmlns:ns2="http://www.something.com/something">
<ns2:food>steak</ns2:food>
<ns2:beverage>water</ns2:beverage>
</root>
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="yes">
<root xmlns="http://www.something.com/something">
<food>steak</food>
<beverage>water</beverage>
</root>
Run Code Online (Sandbox Code Playgroud)
这就是我的Java代码正在做的事情:
JAXBContext context = JAXBContext.newInstance("com.schema");
JAXBElement<FoodSchema> element = new JAXBElement<FoodSchema>
(new QName("FoodSchema"), Food.class, foodSchema);
Marshaller marshaller = context.createMarshaller();
OutputStream os = new FileOutputStream(object.getFilePath());
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(element, os);
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!谢谢!
我有以下代码
DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance();
Document doc_;
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
doc_.getDocumentElement().normalize();
Run Code Online (Sandbox Code Playgroud)
然后我就能做到
doc_.getDocumentElement();
Run Code Online (Sandbox Code Playgroud)
得到我的第一个元素,但问题是而不是job元素是tns:job.
我知道并试图使用:
dbFactory_.setNamespaceAware(true);
Run Code Online (Sandbox Code Playgroud)
但这不是我正在寻找的东西,我需要一些东西来完全摆脱命名空间.
任何帮助将不胜感激,谢谢,
玩笑