转换后,javax.xml.transform.Transformer交换元素属性

时间:2012-04-28 10:18:12

标签: java xml xslt

我正在尝试打开XML文件,添加一些更改,并保存到其他XML文件结果。我正在使用标准的javax.xml.parsers。*和javax.xml.transform * classes。

但是在保存的文档中,某些元素中的属性会被交换,例如:

当时:

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

1 个答案:

答案 0 :(得分:1)

不,XML中的属性顺序并不重要,XSLT明确允许系统以任何顺序报告属性,并且不能控制属性序列化的顺序。