JDom und XPath

Status
Nicht offen für weitere Antworten.

fisch

Aktives Mitglied
Hi

ich versuche grade mit XPath und Jdom eine Element zu löschen. XPath findet es zwar aber wie kann ich denn das Element zurück bekommen um es mit remove zu entfernen. Bis jetzt bekomm ich von XPath immer nur true zurück. Das Problem ist, das meine Elemente im Prinzip alle gleich heißen und sich nur in den Attributen unterscheiden:

Das XML Dokument:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE style-decl SYSTEM ".\templates\style.dtd">
<style-decl>
  <font-decl key="kursiv" font-family="Arial" font-color="RGB {0, 0, 0}" font-size="10" underlined="0" italic="-1" style="2" />
  <font-decl key="ueberschrift" font-family="Arial" font-color="RGB {0, 0, 0}" font-size="14" underlined="1" italic="0" style="0" />
</style-decl>


Und mein Java Code dazu

Code:
XPath xStyle = XPath.newInstance("/style-decl/font-decl/@key=\""+id+"\"");
List liste = xStyle.selectNodes(styleDoc);
System.out.println(liste.toString());
			
			
styleRoot.removeChild(xStyle.selectSingleNode(styleDoc).toString())
outPutter.output(styleDoc,styleStream);
styleStream.close();
 

clemson

Bekanntes Mitglied
bzw. probier mal die Abfrage
Code:
//style-decl/font-decl[@key='"+id+"']
 

fisch

Aktives Mitglied
Also wenn es so wie oben abgefragt wird dann bekomme ich
Code:
 true
als Ergebnis und wenn ich deine Abfrage benutze bzw.
Code:
//font-decl[@key='"+id+"']
dann bekomme ich
Code:
[Element: <font-decl/>]

Noch eine Frage zwischen durch wie kann ich denn meinem Root-Element ein Namespace hinzufügen.
 

clemson

Bekanntes Mitglied
okay, dann musst du die zweite abfrage verwenden (ich glaube es hat an dem einfachen slash und bei dem
Code:
font-decl/@key=\""+id+"\""
bei der ersten abfrage gelegen).

Jedenfalls hast du jetzt das bestimmte Element abgefragt. Jetzt musst du dieses Element nur mehr noch casten und von deinem Dokument lösen...

also, so in etwa:
Code:
XPath xStyle = XPath.newInstance("/style-decl/font-decl[@key='"+id+"']");
List liste = xStyle.selectNodes(styleDoc);
System.out.println(liste.toString());

Element font_decl = (Element) liste.get(0);
         
         
styleRoot.removeChild(font_decl)
outPutter.output(styleDoc,styleStream);
styleStream.close();
 

fisch

Aktives Mitglied
Hm versteh ich grade nicht ganz was meinst du mit " casten und von deinem Dokument lösen"
Kannst du mir das grad mal ein bißchen näher erklären bitte
 

fisch

Aktives Mitglied
ah okay doch net ganz verwirrt, danke für den namespace hinweis, allerdings hab ich das mit dem casten immer noch net verstanden (okay is grad mal 5 minuten her)
 

clemson

Bekanntes Mitglied
fisch hat gesagt.:
Hm versteh ich grade nicht ganz was meinst du mit " casten und von deinem Dokument lösen"
Kannst du mir das grad mal ein bißchen näher erklären bitte


nun ja. da wir ja wissen, dass die xpath abfrage, welche du an dem dokument ausgeführt hast, ein Ergebnis vom Typ Element zurückgibt (sieht man an der ausgabe bzw. kannst du dir mittels
Code:
System.out.println( liste.get(0).getClass().toString() );
ausgeben lassen), kannst du dieses Ergebnis beruhigt nach Element casten (umwandeln).
 

fisch

Aktives Mitglied
Steh wohl irgendwie auf dem Schlauch, versteh schon was du mir da erklärst, allerdings weiß ich immer noch nicht was mir das jetzt bei löschen bringt, da ich ja doch als angabe nur
Code:
font-decl
bekomme, ich aber nicht irgendein Element löschen will sondern das mit einem bestimmten Schlüssel (im key Attribut). Also ich mein aus diesem Dokument
Code:
<font-decl key="kursiv" fo:font-family="Arial" fo:font-color="RGB {0, 0, 0}" fo:font-size="12" underlined="0" italic="-1" fo:font-style="2" />
<font-decl key="regen" fo:font-family="Blackadder ITC" fo:font-color="RGB {0, 0, 0}" fo:font-size="14" underlined="0" italic="1" fo:font-style="3" />

will ich jetzt zum Beispiel das 2. Element löschen (das mit Regen).

Vielleicht versteh ich dich aber auch falsch und du hast mir schon die Antwort gegeben, aber dann sehe ich sie wohl gerade nicht :bahnhof:
 

Bleiglanz

Gesperrter Benutzer
Code:
XPath xStyle = XPath.newInstance("/style-decl/font-decl[@key='kursiv']"); 
 
Object treffer = xStyle.selectSingleNode(doc);

if(treffer instanceof Element){
    ((Element) treffer).getParent().removeContent((Element)treffer);
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
C XPath in JDOM klappt nicht XML & JSON 2
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
clemson xpath mit jdom XML & JSON 2
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G einzelne tags mit jdom auslesen XML & JSON 4
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
K JDOM SAXBuilder einlesen XML & JSON 6
S Ausgabe "asXML" mit Jdom XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
G XML mit JDOM ausgeben [Klappe die 1Mio.ste] XML & JSON 2
F XML mit JDOM auslesen XML & JSON 2
D JDOM auf den PC machen XML & JSON 6
J JDOM Unicode XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
P JDOM Werte verändern XML & JSON 4
S OutOfMemory mit JDOM XML & JSON 6
S org.jdom.document in String umwandeln. XML & JSON 2
M ISO-8859-1 >> UTF-8 + JDOM + Verwirrung. XML & JSON 2
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
J JDOM mit XML-Schema XML & JSON 8
P HTML-Sting in JDOM XML & JSON 7
B JDOM && ObjectOutputStream XML & JSON 8
B Versionskonflikt bei JDOM XML & JSON 9
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
M JDOM parse Exception XML & JSON 3
G JDom encoding ändern XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10

Ähnliche Java Themen

Neue Themen


Oben