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 回答