Ordre des attributs en XML après le traitement DOM
Lors de la manipulation de données XML à l'aide du modèle d'objet de document (DOM), l'ordre des attributs peut ne pas être conservé après la sérialisation. Cela pose un défi si le maintien de l'ordre des attributs est crucial pour votre application.
DOM et ordre des attributs
DOM ne maintient pas explicitement l'ordre des attributs dans sa représentation interne. Par conséquent, lorsque vous récupérez des attributs à l'aide de méthodes DOM telles que getAttribute() et getAttributes(), l'ordre peut différer de leur séquence d'origine dans la source XML.
SAX pour préserver l'ordre des attributs
Contrairement à DOM, l'API simple pour XML (SAX) fournit un moyen de parcourir le document XML sous forme de flux d'événements. En créant un objet SAXParser et en enregistrant un SAX ContentHandler, vous pouvez suivre les événements liés aux éléments, attributs et autres aspects du document XML.
Exemple d'utilisation de SAX
Voici un exemple en Java qui montre l'utilisation de SAX pour préserver l'ordre des attributs :
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 } } }
Conclusion
Bien que DOM ne maintienne pas explicitement l'ordre des attributs, SAX propose une approche flexible. pour traiter les documents XML et conserver les attributs dans leur séquence d'origine. Cela vous permet de conserver l'ordre des attributs intact même après avoir transformé ou modifié des données XML à l'aide de l'infrastructure API XML standard de Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!