Heim > Java > javaLernprogramm > Wie kann ich die Attributreihenfolge in XML nach der DOM-Verarbeitung beibehalten?

Wie kann ich die Attributreihenfolge in XML nach der DOM-Verarbeitung beibehalten?

Linda Hamilton
Freigeben: 2024-11-14 10:32:02
Original
530 Leute haben es durchsucht

How Can I Preserve Attribute Order in XML After DOM Processing?

Attributreihenfolge in XML nach der DOM-Verarbeitung

Beim Bearbeiten von XML-Daten mithilfe des Document Object Model (DOM) ändert sich möglicherweise die Reihenfolge der Attribute nach der Serialisierung erhalten bleiben. Dies stellt eine Herausforderung dar, wenn die Aufrechterhaltung der Attributreihenfolge für Ihre Anwendung von entscheidender Bedeutung ist.

DOM und Attributreihenfolge

DOM behält die Reihenfolge der Attribute in seiner internen Darstellung nicht explizit bei. Wenn Sie also Attribute mit DOM-Methoden wie getAttribute() und getAttributes() abrufen, kann die Reihenfolge von ihrer ursprünglichen Reihenfolge in der XML-Quelle abweichen.

SAX zur Beibehaltung der Attributreihenfolge

Im Gegensatz zu DOM bietet die Simple API for XML (SAX) eine Möglichkeit, das XML-Dokument als Ereignisstrom zu durchlaufen. Indem Sie ein SAXParser-Objekt erstellen und einen SAX ContentHandler registrieren, können Sie Ereignisse im Zusammenhang mit Elementen, Attributen und anderen Aspekten des XML-Dokuments verfolgen.

Beispiel mit SAX

Hier ist ein Beispiel in Java, das die Verwendung von SAX zum Beibehalten von Attributen demonstriert Reihenfolge:

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
        }
    }
}
Nach dem Login kopieren

Fazit

Während DOM die Attributreihenfolge möglicherweise nicht explizit beibehält, bietet SAX einen flexiblen Ansatz zur Verarbeitung von XML-Dokumenten und zur Beibehaltung von Attributen in ihrer ursprünglichen Reihenfolge. Dadurch können Sie die Attributreihenfolge auch nach der Transformation oder Änderung von XML-Daten mithilfe der Standard-XML-API-Infrastruktur von Java beibehalten.

Das obige ist der detaillierte Inhalt vonWie kann ich die Attributreihenfolge in XML nach der DOM-Verarbeitung beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage