0
XML 파일을 열고 변경 사항을 추가하고 다른 XML 파일 결과에 저장하려고합니다. 표준 javax.xml.parsers. * 및 javax.xml.transform * 클래스를 사용하고 있습니다. 변환 후 요소 속성을 교환하는 javax.xml.transform.Transformer
그러나 저장된 문서의
예를 들어, 교환하는 일부 요소의 속성 :이 되었습니까 :
<affiliation countryCode="HU" xml:id="curr1">
요소 "countryCode와"와 "XML :
<affiliation xml:id="curr1" countryCode="HU">
그리고 변환 후
: 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;
}
방법이 있는지 모르겠지만 왜 방해가됩니까? 예를 들어 나중에 파일을 비교하는 것에 대해 걱정할 경우 Altova DiffDog와 같은 우수한 XML 비교 도구를 사용하면 특성 순서를 무시할 수 있습니다. – Maestro13
http://stackoverflow.com/questions/726395/order-of-xml-attributes-after-dom-processing –
XML Infoset (XPath 1.0 데이터 모델)에는 "order of 속성 ". 일련 화되는 순서는 XSLT 프로세서의 구현에 따라 다릅니다. 그러나보고 된 결과가 독립적으로 재 인쇄 될 수 있도록 XSLT 코드와 가능한 가장가 까운 XML 문서를 보여 주면 직렬화 된 속성의 다른 순서가 될 수있는 리팩토링을 제안 할 수 있습니다 . –