Announcement

Collapse
No announcement yet.

xPath - bestimmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xPath - bestimmen

    Hallo alle zusammen.
    Habe eine Klasse programmiert, die mir einen Path aus meine XML- Datei ausgeben soll.
    Es funktionier aber nur wenn jedes Element nur ein Mal vorkommt. Was mache ich wenn Ein Element mehrere Kinder hat?

    JAVA
    Code:
    import org.w3c.dom.*;
    
    
    public class DomPathExtractor {
    
    
       public static String getxPath( Element x ) {
    
       Node t=x;
          final StringBuffer res=new StringBuffer();
          while (t instanceof Element) {
             res.insert(0, "/"+t.getNodeName());
             t=t.getParentNode();
          }
          return res.toString();
       }
       
    }
    XML:
    Code:
     <?xml version=\"1.0\" ?>
                     <article>
                       <title>test</title>
                       <team>
                        <member/>
                           <member name = \"B\"/>
                           <member name = \"C\"/>
                       </team>
                     </article>
    Nach meine jetzige Stand bekomme ich diesen Pfad : /article/team/member.
    Welche member ist unklar.
    Es soll dies rauskommen: /artikle/team/member[1]. (oder 2 , je nach Variation)

    Wie bestimme ich die Position?

  • #2
    Am besten mit DOM4J Version 1.4

    http://www.dom4j.org/

    Bespiele

    http://www.dom4j.org/guide.html
    Christian

    Comment


    • #3
      Danke Christian,

      leider es ist nicht was ich brauche (jetzt nicht, vielleicht später.)

      Meine Methode funktioniert, liefert nur erste Element. Ich muss irgendwie noch eine Bedienung einbauen. : wenn mehrere Child-Elemente in einem Parent – Element existieren, soll das Programm untersuchen und dann entsprechend ausgeben.

      Habe mir so was gedacht :
      In meine while – Schleife noch eine for –Schleife einbauen, die dann alle Kinder überprüft

      Code:
      public static String getxPath( Element x ) {
      
      	int count =0;
      	Node t=x;
      	final StringBuffer res=new StringBuffer();
      	while (t instanceof Element) {
      		res.insert(0, "/"+t.getNodeName());
      		++count;
      		
      		
                     final NodeList childs=t.getChildNodes();
      		for (int i = 0; i<childs.getLength(); i++){
      			t=childs.item(i);
      			if (t.equals(t.getNodeName())){ 
      			}????
      		}
      			t=t.getParentNode();
      	}
      	return res.toString();
      
      }
      Hier hackt bei mir….oder liege ich komplett falsch..?

      Comment

      Working...
      X