0
XMLファイルを開き、いくつかの変更を追加して他のXMLファイルの結果に保存しようとしています。標準のjavax.xml.parsers。*クラスとjavax.xml.transform *クラスを使用しています。javax.xml.transform.Transformerは、変換後に要素の属性をスワップします
しかし、保存された文書には、いくつかの要素の属性は、例えば、スワップされています
ました:
<affiliation xml:id="curr1" countryCode="HU">
そして、変換後:
<affiliation countryCode="HU" xml:id="curr1">
要素 "COUNTRYCODE" と「XML :id "がスワップされます。
属性のスワップを制限する方法はありますか?
オープニング/ XMLを保存するコード:
// Imports
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
// Opening
Document document = getDocumentBuilder().parse(src);
// Saving
getTransformer().transform(new DOMSource(document), new StreamResult(dst));
private DocumentBuilder getDocumentBuilder() throws ParserConfigurationException {
return documentBuilder == null ? documentBuilder = documentBuilderFactory.newDocumentBuilder() : documentBuilder;
}
private Transformer getTransformer() throws TransformerConfigurationException {
return transformer == null ? transformer = transformerFactory.newTransformer() : transformer;
}
方法があるかどうかわかりませんが、なぜ気になるのですか?たとえば、後でファイルを比較することを心配する場合は、Altova DiffDogのような優れたXML比較ツールを使用してください。これは属性の順序を無視できます。 – Maestro13
http://stackoverflow.com/questions/726395/order-of-xml-attributes-after-dom-processingの複製 –
XML Infoset(XPath 1.0データモデル)には、 "属性 "と呼ばれる。それらがシリアル化される順序は、XSLTプロセッサの実装に依存します。しかし、XSLTコードと可能な限り最少のXML文書を表示して、報告された結果を個別に再現できるようにすると、リファクタリングを提案することができます。その結果、シリアル化された属性。 –