DOM 처리 후 XML의 속성 순서
DOM(문서 개체 모델)을 사용하여 XML 데이터를 조작할 때 속성 순서가 맞지 않을 수 있습니다. 직렬화 후에도 보존됩니다. 애플리케이션에 속성 순서를 유지하는 것이 중요한 경우 이는 문제가 됩니다.
DOM 및 속성 순서
DOM은 내부 표현에서 속성 순서를 명시적으로 유지하지 않습니다. 따라서 getAttribute() 및 getAttributes()와 같은 DOM 메소드를 사용하여 속성을 검색하면 순서가 XML 소스의 원래 순서와 다를 수 있습니다.
속성 순서 보존을 위한 SAX
DOM과 달리 SAX(Simple API for XML)는 XML 문서를 이벤트 스트림으로 탐색하는 방법을 제공합니다. SAXParser 객체를 생성하고 SAX ContentHandler를 등록하면 XML 문서의 요소, 속성 및 기타 측면과 관련된 이벤트를 추적할 수 있습니다.
SAX 사용 예
다음은 SAX를 사용하여 속성 순서를 유지하는 방법을 보여주는 Java 예제입니다.
import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.SAXException; import org.xml.sax.InputSource; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; import org.xml.sax.ContentHandler; import org.xml.sax.helpers.DefaultHandler; public class PreserveAttributeOrderSAX { public static void main(String[] args) throws SAXException { SAXParserFactory spf = SAXParserFactoryImpl.newInstance(); spf.setNamespaceAware(true); spf.setValidating(false); try { spf.setFeature("http://xml.org/sax/features/validation", false); spf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false); spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); SAXParser sp = spf.newSAXParser(); XMLReader reader = sp.getXMLReader(); ContentHandler handler = new AttributeOrderContentHandler(); reader.setContentHandler(handler); reader.parse(new InputSource("sample.xml")); } catch (SAXNotSupportedException | SAXNotRecognizedException e) { e.printStackTrace(); } } } private static class AttributeOrderContentHandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { for (int i = 0; i < attributes.getLength(); i++) { String name = attributes.getQName(i); String value = attributes.getValue(i); // Process the attribute with its preserved order } } }
결론
DOM은 명시적으로 속성 순서를 유지하지 않을 수 있지만 SAX는 유연한 접근 방식을 제공합니다. XML 문서를 처리하고 원래 순서대로 속성을 보존합니다. 이를 통해 Java의 표준 XML API 인프라를 사용하여 XML 데이터를 변환하거나 수정한 후에도 속성 순서를 그대로 유지할 수 있습니다.
위 내용은 DOM 처리 후 XML에서 속성 순서를 어떻게 보존할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!