Rumah >Java >javaTutorial >Bagaimanakah saya boleh mengekalkan susunan atribut XML selepas pemprosesan DOM?

Bagaimanakah saya boleh mengekalkan susunan atribut XML selepas pemprosesan DOM?

Patricia Arquette
Patricia Arquetteasal
2024-11-14 17:59:02658semak imbas

How can I maintain XML attribute order after DOM processing?

Tertib Atribut XML Selepas Pemprosesan DOM

Apabila bekerja dengan fail XML menggunakan Model Objek Dokumen (DOM) standard, mengekalkan susunan atribut semasa bersiri kembali kepada XML tidak dijamin. Ini boleh menjadi masalah untuk situasi yang tertib atribut adalah penting.

Sebab di sebalik isu ini terletak pada reka bentuk DOM. Ia menganggap atribut sebagai koleksi tidak tersusun, mengabaikan urutannya. Apabila XML bersiri, atribut ditulis dalam susunan sewenang-wenangnya.

Penyelesaian Kemungkinan

Terdapat dua pendekatan untuk menangani isu ini:

1. Menggunakan SAX (API Mudah untuk XML)

penghurai berasaskan SAX, tidak seperti DOM, menyediakan cara untuk mengekalkan susunan atribut. Dengan menggunakan penghurai SAX, adalah mungkin untuk mengawal jujukan atribut ditulis pada XML yang terhasil.

2. Lembaran Gaya Transformasi XSLT Tersuai

Sebagai alternatif, anda boleh mencipta lembaran gaya transformasi XSLT tersuai untuk menentukan susunan atribut yang diingini. Ini melibatkan penentuan templat output yang menyatakan secara eksplisit urutan atribut.

Sebab Mengekalkan Susunan Atribut

Walaupun sesetengah pihak berpendapat bahawa susunan atribut tidak relevan dalam XML, terdapat sah sebab untuk mengekalkannya:

  • Ujian Regresi: Mengesahkan perbezaan output XML boleh menjadi lebih mudah dengan susunan atribut yang dikekalkan.
  • Kebolehbacaan Manusia: Mengekalkan atribut dalam susunan asalnya meningkatkan kebolehbacaan dan kebolehselenggaraan fail XML, terutamanya untuk fail konfigurasi yang diedit secara manual.
  • Alat Pihak Ketiga: Beberapa alatan pengendalian XML, seperti penyunting XML, mungkin bergantung pada susunan atribut untuk berfungsi dengan betul.

Contoh Menggunakan SAX

Coretan kod SAX berikut boleh digunakan untuk mengekalkan susunan atribut semasa bersiri:

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 );

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekalkan susunan atribut XML selepas pemprosesan DOM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn