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
Lepaskan: 2024-11-14 17:59:02
asal
690 orang telah melayarinya

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 );
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan