Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
Matt Sheppard
Matt Sheppard

Modificări mici la un document XML utilizând StAX

În prezent, încerc să citesc într-un fișier XML, să fac modificări minore (modificarea valorii anumitor atribute) și să îl scriu din nou.

Am intenționat să folosesc un parser StAX ( javax.xml.stream.XMLStreamReader ) pentru a citi în fiecare eveniment, să văd dacă a fost unul pe care am vrut să îl schimb și apoi să îl dau direct scriitorului StAX ( javax.xml.stream.XMLStreamReader ) dacă nu au fost necesare modificări.

Din păcate, aceasta nu pare a fi atât de simplă - scriitorul nu are nici un fel de a lua un tip de eveniment și un obiect de analiză, doar metode precum writeAttribute și writeStartElement . Evident, aș putea să scriu o declarație de comutare mare cu un caz pentru fiecare tip de element posibil care poate apărea într-un document XML și să-l scriu din nou, dar se pare că este o mulțime de probleme pentru ceva care pare să fie simplu .

Există ceva ce lipsește, care face ușor să scrieți un document XML foarte asemănător celui pe care îl citiți cu StAX?

5 2008-08-14T02:22:37+00:00 3
Programare
java
xml
stax
Comentarii la întrebare (0)
Matt Sheppard
14 august 2008 в 8:13
2008-08-14T08:13:24+00:00
Mai mult
Sursă
Editează
#10660

Dupa un pic de muck in jurul, raspunsul pare a fi de a folosi versiuni de cititor/scriitor de evenimente, mai degrabă decât versiunile Stream.

(adică javax.xml.stream.XMLEventReader și javax.xml.stream.XMLEventWriter)

Consultați, de asemenea, http://www.devx.com/tips/Tip/37795 , ceea ce mi-a făcut în cele din urmă să mă mișc.

0
0
Comentarii (0)
dlinsin
14 august 2008 в 9:52
2008-08-14T09:52:27+00:00
Mai mult
Sursă
Editează
#10713

StAX funcționează destul de bine și este foarte rapid. Am folosit-o într-un proiect pentru a analiza fișierele XML de până la 20MB. Nu am o analiză amănunțită, dar era cu siguranță mai rapidă decât SAX.

În ceea ce privește întrebarea dvs.: Diferența dintre streaming și manipularea evenimentelor, AFAIK este de control. Cu API-ul de streaming puteți trece prin documentul dvs. pas cu pas și obțineți conținutul dorit. Întrucât API-ul pe bază de eveniment se poate ocupa doar ceea ce vă interesează.

0
0
Comentarii (0)
StaxMan
11 august 2010 в 12:12
2010-08-11T00:12:44+00:00
Mai mult
Sursă
Editează
#3453006

Știu că este o întrebare destul de veche, dar dacă cineva caută ceva de genul acesta, există o altă alternativă: extensia API Woodstox Stax2 are metodă:

XMLStreamWriter2.copyEventFromReader(XMLStreamReader2 r, boolean preserveEventData) 

care copiază evenimentul indicat în prezent din cititorul de flux utilizând scriitorul fluxului. Acest lucru nu este doar simplu, dar foarte eficient. Am folosit-o pentru modificări similare cu succes.

(cum să obțineți XMLStreamWriter2 etc?) Toate instanțele furnizate de Woodstox implementează aceste versiuni extinse - plus există ambalaje în cazul în care cineva vrea să folosească variante de bază "de bază", de asemenea)

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire