XML ファイルを開き、いくつかの変更を加えて、結果を他の XML ファイルに保存しようとしています。標準の javax.xml.parsers.* および javax.xml.transform* クラスを使用しています。
ただし、保存されたドキュメントでは、一部の要素の属性が入れ替わっています。次に例を示します。
だった:
<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;
}