gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:24:32 26 4
gpt4 key购买 nike

我正在尝试打开 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;
}

最佳答案

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

关于javax.xml.transform.Transformer 转换后交换元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com