相关疑难解决方法(0)

Java:编组对象 - 在xml中删除额外的ns2注释

我试图根据定义的模式将对象中的数据编组到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)

任何帮助深表感谢!谢谢!

java xml jaxb marshalling xml-namespaces

16
推荐指数
2
解决办法
3万
查看次数

如何使用java dom从xml中删除命名空间?

我有以下代码

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)

但这不是我正在寻找的东西,我需要一些东西来完全摆脱命名空间.

任何帮助将不胜感激,谢谢,

玩笑

java xml dom xml-namespaces domdocument

13
推荐指数
3
解决办法
5万
查看次数

标签 统计

java ×2

xml ×2

xml-namespaces ×2

dom ×1

domdocument ×1

jaxb ×1

marshalling ×1