Ich beschäftige mich momentan mit JDOM und der Suche von Elementen in einem Dokument.
Mein derzeitiges Problem besteht darin, dass ich Elemente bei absoluter Namensgleichheit finden möchte.
Mein Ziel ist es in einem Dokument wo auch alle Knoten gleich sein können den richtigen zu finden damit ich.
weitere Knoten an dem gesuchten abändern / löschen etc kann.
Als Beispiel sei die untere XML gegeben:
(Das Attribut ident habe ich zur eigenen Orientierung eingebaut: Es gibt die Tiefe der Knoten an.)
Grundlage für die suchbegriffe bietet momentan ein JTree:
Ich übergebe der Methode oldSearchElement
1) ein JDOM Element (am Anfang ist es das Root Element des Dokuments)
2) Einen Sichstring (in dem Falle ist es der Name des Knoten aus der JTree-Ansicht)
3) int nodelevel -> Knotentiefe im JTree
4) int nodeposition -> Position beim Parent ( z.b 3ter von 4 Knoten an einem Beliebigen Knoten )
Momentan benutzte ich nur nodeposition und searchname und konnte die Suchergebnisse
schon stark einschränken. Kann man so eine Suche nicht vielleicht einfacher machen ?
Hat da jemand erfahrung ?
mfg shiRiaRu
Mein derzeitiges Problem besteht darin, dass ich Elemente bei absoluter Namensgleichheit finden möchte.
Mein Ziel ist es in einem Dokument wo auch alle Knoten gleich sein können den richtigen zu finden damit ich.
weitere Knoten an dem gesuchten abändern / löschen etc kann.
Als Beispiel sei die untere XML gegeben:
(Das Attribut ident habe ich zur eigenen Orientierung eingebaut: Es gibt die Tiefe der Knoten an.)
Grundlage für die suchbegriffe bietet momentan ein JTree:
Ich übergebe der Methode oldSearchElement
1) ein JDOM Element (am Anfang ist es das Root Element des Dokuments)
2) Einen Sichstring (in dem Falle ist es der Name des Knoten aus der JTree-Ansicht)
3) int nodelevel -> Knotentiefe im JTree
4) int nodeposition -> Position beim Parent ( z.b 3ter von 4 Knoten an einem Beliebigen Knoten )
Momentan benutzte ich nur nodeposition und searchname und konnte die Suchergebnisse
schon stark einschränken. Kann man so eine Suche nicht vielleicht einfacher machen ?
Hat da jemand erfahrung ?
Code:
<?xml version="1.0" encoding="UTF-8"?>
<tiere>
<reptilien ident="reptilien-1.0">
<reptilien ident="reptilien-1.1">
<reptilien ident="reptilien-1.1.1">reptilien</reptilien>
<reptilien ident="reptilien-1.1.2">reptilien</reptilien>
<reptilien ident="reptilien-1.1.3">reptilien</reptilien>
</reptilien>
</reptilien>
<reptilien ident="reptilien-2.0">
<reptilien ident="reptilien-2.1">
<reptilien ident="reptilien-2.1.1">reptilien</reptilien>
<reptilien ident="reptilien-2.1.2">reptilien</reptilien>
<reptilien ident="reptilien-2.1.3">reptilien</reptilien>
</reptilien>
</reptilien>
<reptilien ident="reptilien-3.0">
<reptilien ident="reptilien-3.1">
<reptilien ident="reptilien-3.1.1">reptilien</reptilien>
<reptilien ident="reptilien-3.1.2">reptilien</reptilien>
<reptilien ident="reptilien-3.1.3">reptilien</reptilien>
</reptilien>
</reptilien>
</tiere>
Code:
public static Element oldSearchElement(Element givenEL,String searchname,int nodelevel,int nodeposition)
{
List listMainElements = givenEL.getChildren();
for(int i=0; i<listMainElements.size();i++)
{
givenEL = (Element)(listMainElements.get( i ));
oldSearchElement(givenEL,searchname,nodelevel,nodeposition);
if(givenEL.getName() == searchname && nodeposition == i )
{
TextIO.putln("Sind gleich: "+"Suchbegriff ->"+searchname+" und Elementname ->"+givenEL.getName());
TextIO.putln("(i)->"+i+"(nodeposition)->"+nodeposition);
foundEL = givenEL;
counter++;
}
}
return foundEL;
}
mfg shiRiaRu