찾다
Javajava지도 시간DOM 처리 후 XML 속성 순서를 어떻게 유지합니까?

How can I maintain XML attribute order after DOM processing?

DOM 처리 후 XML 속성 순서

표준 DOM(문서 개체 모델)을 사용하여 XML 파일 작업 시 직렬화 중에 속성 순서 유지 XML로 돌아가는 것은 보장되지 않습니다. 이는 속성 순서가 중요한 상황에서 문제가 될 수 있습니다.

이 문제의 원인은 DOM 설계에 있습니다. 속성은 순서를 무시하고 순서가 지정되지 않은 컬렉션으로 처리됩니다. XML이 직렬화되면 속성이 임의의 순서로 작성됩니다.

가능한 해결 방법

이 문제를 해결하는 데는 두 가지 접근 방식이 있습니다.

1. SAX(Simple API for XML)

DOM과 달리 SAX 기반 파서를 사용하면 속성 순서를 유지하는 방법을 제공합니다. SAX 파서를 활용하면 결과 XML에 속성이 기록되는 순서를 제어할 수 있습니다.

2. 사용자 정의 XSLT 변환 스타일시트

또는 사용자 정의 XSLT 변환 스타일시트를 생성하여 원하는 속성 순서를 지정할 수 있습니다. 여기에는 속성 순서를 명시적으로 지정하는 출력 템플릿 정의가 포함됩니다.

속성 순서를 보존하는 이유

어떤 사람들은 속성 순서가 XML에서 관련이 없다고 주장하지만, 정당한 이유가 있습니다. 보존 이유:

  • 회귀 테스트: 속성 순서를 유지하면 XML 출력 차이를 더 쉽게 확인할 수 있습니다.
  • 사람의 가독성: 속성을 ​​원래 순서로 유지하면 특히 수동으로 편집한 구성 파일의 경우 XML 파일의 가독성과 유지 관리성이 향상됩니다.
  • 타사 도구: XML 편집기와 같은 일부 XML 처리 도구는 속성 순서에 의존할 수 있습니다.

SAX 사용 예

다음 SAX 코드 조각을 사용하여 직렬화 중에 속성 순서를 유지할 수 있습니다.

SAXParserFactory spf = SAXParserFactoryImpl.newInstance();
spf.setNamespaceAware(true);
spf.setValidating(false);
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() ;
Source src = new SAXSource ( sp.getXMLReader(), new InputSource( input.getAbsolutePath() ) ) ;
String resultFileName = input.getAbsolutePath().replaceAll(".xml$", ".cooked.xml" ) ;
Result result = new StreamResult( new File (resultFileName) ) ;
TransformerFactory tf = TransformerFactory.newInstance();
Source xsltSource = new StreamSource( new File ( COOKER_XSL ) );
xsl = tf.newTransformer( xsltSource ) ;
xsl.setParameter( "srcDocumentName", input.getName() ) ;
xsl.setParameter( "srcDocumentPath", input.getAbsolutePath() ) ;

xsl.transform(src, result );

위 내용은 DOM 처리 후 XML 속성 순서를 어떻게 유지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기