Was ist der schnellste Weg, um dem Wurzelelement einer umfangreichen XML-Datei ein Attribut hinzuzufügen? Diese Dateien sind zu groß, um in den Speicher gelesen zu werden, und ich möchte so viel wie möglich von einer I/O-Strafe vermeiden.Der effizienteste Weg, Attribute zum Starten einer umfangreichen XML-Datei in Java hinzuzufügen?
Antwort
Sie werden die ganze Datei sowieso nicht neu schreiben müssen, wenn Sie Text am oder nahe dem Anfang einfügen? Ein SAX-Parser sollte an Eingabepuffer (über einen InputStream) angepasst werden können, wenn Sie nicht alle gleichzeitig im Speicher haben möchten.
Sie werden immer noch den Hit der Neuschreiben der gesamten Datei, aber nicht der Speichertreffer auf einmal in den Speicher zu nehmen. Im Grunde werden Sie die Datei analysieren, die SAX-Ereignisse abhören und die neue Datei aus diesen Ereignissen herausschreiben. Ihr SAX-Parser wird dann auch auf die richtigen Umstände achten, um ein Attribut hinzuzufügen.
Ausgezeichnete Antwort :) –
Es ist praktisch unmöglich, die Datei in Java nicht neu zu schreiben (ich glaube nicht, dass Sie das tun könnten, wenn Sie die Dateien auf Systemebene optimieren würden, aber vielleicht ...) - Ihre Frage wird also effizienteste Möglichkeit, die Datei neu zu schreiben?
Wenn möglich, würde ich alle XML-Parser vermeiden und meine eigenen schreiben. Dies würde erfordern, dass Sie leicht identifizieren können, wo in der Datei dieses neue Attribut abgelegt werden muss. Wenn Sie die passende Zeichenfolge finden, können Sie nach und nach einlesen, nach dem Einfügepunkt suchen und einfach Ihre zusätzlichen Daten eingeben, wenn Sie dort angekommen sind, und dann den Rest kopieren.
- 1. Der effizienteste Weg zum Aufteilen von Strings in Java
- 2. Mehr Pythonic Weg Attribute zur Klasse hinzuzufügen?
- 3. Der effizienteste Weg zum Modellieren von Daten in Elasticsearch
- 4. Der effizienteste Weg zum Laden von formatierten Binärdateien in Python
- 5. Der effizienteste Weg zum Verschieben der MultiIndex-Zeitreihe
- 6. Der effizienteste Weg, einen Stack umzukehren und zu einer ArrayList hinzuzufügen
- 7. Der effizienteste Weg, Arrays in C# anzuhängen?
- 8. Der effizienteste Weg, Xml zu analysieren
- 9. Java/Android - Der effizienteste Weg, um viele Variablen zu speichern
- 10. effizienteste Weg Objekttyp Test
- 11. Der effizienteste Weg zur Untermenge von Vektoren
- 12. Ist es möglich, einer Eigenschaft der dynamischen Objektlaufzeit Attribute hinzuzufügen?
- 13. effizienteste Weg Input von Output
- 14. Was ist der effizienteste Weg, um Analytics Beacons zu speichern?
- 15. Was ist der einfachste Weg, Kommas zu einer Ganzzahl hinzuzufügen?
- 16. Der effizienteste Weg, um ein Element hinzuzufügen und gleichzeitig eines aus einer Liste mit einer festen Länge zu entfernen
- 17. Der effizienteste Weg, Standardkonstruktor eines Typs
- 18. Der effizienteste Weg, Daten nach Zeitstempeln abzurufen
- 19. Der effizienteste Weg, Eltern/Kind zu behandeln
- 20. Der effizienteste Weg, um große Dateien in Chunks zu lesen
- 21. Der effizienteste Weg, Listen zu bekommen?
- 22. Schnellster Weg zum Starten von Android Emulator
- 23. Der effizienteste Weg, Spalten zu sortieren und Rangvariablen zu erstellen
- 24. Der effizienteste Weg, IP-Adresse in MySQL zu speichern
- 25. Python: effizienteste Weg Datum Datumzeit
- 26. Der effizienteste Weg, um eine Guid in C#
- 27. Die effizienteste Sammlung zum Filtern eines Java-Streams?
- 28. Der effizienteste/sicherste Weg, Testzeitraum in Kakao zu implementieren
- 29. Der effizienteste Weg, um einen Vektor in Matlab zu wiederholen
- 30. Was ist der richtige Weg, Elemente zu einer CSR_Matrix hinzuzufügen?
ist dies eine neu definierte att oder eine als optional definiert, aber nicht bevölkert att? – akf
Neu definiertes Attribut - speziell das Namespace-Attribut, damit JAXB das Objekt entpacken kann. – Brian
Seien Sie vorsichtig bei der Behandlung von Namespace-Deklarationen als Attribute. Parser behandeln sie besonders und geben diese Informationen möglicherweise nicht als Attribute an die API weiter. – skaffman