0

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;
}
4

1 に答える 1

1

いいえ、XML の属性の順序は重要ではありません。XSLT では、システムが任意の順序で属性を報告することを明示的に許可しており、属性がシリアル化される順序を制御することはできません。

于 2012-04-28T11:07:13.230 に答える