我正在尝试使用JaxB(Jaxb2Marshaller)将Java对象解析为Xml表示形式。在元素之一中,我有两个名称空间和几个属性。一切都很好,但是首先我得到了属性,然后是名称空间。 如何更改,甚至可以更改顺序,因此首先要有名称空间,然后是所有属性。
我现在所拥有的
<Element elementId="AB000000011" timeStamp="2018-12-04T18:48:52.535+02:00" version="2.0" xmlns="http://www.namespace.com/schemas/namespaceapi" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
我想要实现的目标
<Element xmlns="http://www.namespace.com/schemas/namespaceapi" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" elementId="AB000000011" timeStamp="2018-12-04T18:48:52.535+02:00" version="2.0" >
我当然可以在@ XmlType#propOrder的帮助下管理属性的顺序,但是使用命名空间执行类似操作的方法是什么?
答案 0 :(得分:0)
我不知道如何更改订单,但是您可以使用已有的内容生成一个全新的xml文件并选择您的订单。
DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
// Root Element
Element root = document.createElement("Element");
document.appendChild(root);
// xmlns Element
Element xmlns = document.createElement("");
root.appendChild(xmlns);
// xmlns2 Element
Element xmlns2 = document.createElement("xmlns:ns2");
root.appendChild(xmlns2);
// Id Element
Element elementId = document.createElement("elementId");
root.appendChild(elementId);
// timeStamp Element
Element timeStamp = document.createElement("timeStamp");
root.appendChild(timeStamp);
// Version Element
Element version = document.createElement("version");
root.appendChild(version);
您可以像这样用Xpath或Xstream(我不知道这是不是正确的名称)来设置值:
// Version Element
Element estruturas = document.createElement("version");
root.appendChild(version);
version.setTextContent(xpathElement(document, "/Element*[@class='version']").getTextContent());
希望我能为您提供帮助。