Zdravim,

  me nize uvedeny kod funguje.
  Pro jistotu posilam svuj program v jave a soubor newXml.xml

  Pouzivam Dom4J verze 1.6.1., neni problem v tom?

   Lukas


[EMAIL PROTECTED] wrote:
Děkuji za radu ale nebudete mi věřit i tohle jsem zkoušel a 

Exception in thread "main" org.dom4j.InvalidXPathException: Invalid XPath _expression_: '/el/menutem1'. Caused by: org/jaxen/dom4j/Dom4jXPath
        at org.dom4j.xpath.DefaultXPath.parse(DefaultXPath.java:362)
        at org.dom4j.xpath.DefaultXPath.<init>(DefaultXPath.java:59)
        at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
        at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
        at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)

už mě snad napadá jen že jsem nějak nenastavil dom4j ... ale bohužel nevím kde
zkoušel jsem přepsat  inicializační část na SAXReader kdyz to debuguju tak se vytvori spravnej document
import org.dom4j.io.SAXReader;
import org.dom4j.Document;
        File fName = new File("newXml.xml");
        SAXReader reader = new SAXReader();
        Document document = null;
        try {
            document = reader.read(fName);
        } catch (DocumentException ex) {
            ex.printStackTrace();
        }
List item = document.selectNodes("/el/menutem1");

pro uplnost vypisu newXml.xml
<?xml version="1.0" encoding="UTF-8"?>

<el>
    <menutem1 >prvni položka</menutem1>    
    <menuitem2>druhá položka</menuitem2>
    <menuitem2>třetí položka</menuitem2>
</el>
asi bude jednodusi zustat u JDOM .(( proste uz jsem to kontroloval ani nevim kolikrat 
a porad at napisu do document.selectNodes("/el/menutem1"); cokoliv tak mi to spadne na 
XPath.V debugu me vsechno projde vse se vytvori tak jak predpokladam ze ma  a stejne me XPath odstreli.

S pozdravem Petr Roubal

  
Message: 4
Date: Tue, 14 Nov 2006 22:44:10 +0100
From: Lukas Barton <[EMAIL PROTECTED]>
Subject: Re: off topic dotaz .( dom4j
To: Java <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=windows-1250; format=flowed

Pouzijte jen /el/menutem1. Vice viz:
    
http://www.w3schools.com/xpath/default.asp.
  
 Lukas

PS: opravte si preklep menutem1 na menuitem1 (chybejici i).

[EMAIL PROTECTED] wrote:

    
Dobrý den,
najde se dobrá duše která mě poradí kde dělám chybu.
Mám následující problém:
parsoval jsem Xml pomocí JDOM, ted ale chci přejít na dom4j kvůli XPath
můj problém je ,že právě když napíšu nějaký XPath tak mi debuger v
      
netbeansech zahlásí špatný XPath
  
žiju v domění ,že když mám soubor newXml.xml v něm root element el a v
      
něm elementy menutem1
  
,pak přes XPath k nim přistoupím pomocí "/newXml/el/menutem1" ... abych
      
řekl pravdu ... zkoušel jsem už hodně kombinací a ani jednu mi to
nesežralo.
  
ještě dodávám že newXml je v rootu projektovýho adresáře a pomocí JDOM
      
jsem to v pohodě načítal.
  
Pro lepší představu přikládám následující kus kodu : zaremovaný je verze
      
pro JDOM která chodila (teda to co jsem musel změnit při přechodu na dom4j)
  
 String filename = new String("newXml.xml");
      String menuitem = null;
      List clearedList = null;
   // SAXBuilder parser = new SAXBuilder();
   DOMBuilder parser = new DOMBuilder();
   DOMDocument doc = new DOMDocument(filename);
   // Document doc;
   // try{        >    //    doc = parser.build(filename); >    //   
      
doc = parser.build()
  
   // }
  // catch(Exception ex){
  //     ex.printStackTrace();
  //  }
  // List item = doc.getRootElement().getChildren("menutem1");
  List item = doc.selectNodes("/newXml/el/menutem1");
   Iterator i = item.iterator();
   clearedList = new ArrayList();
   while (i.hasNext())
       {
           Element polozka = (Element)i.next();            >           
      
menuitem = polozka.getValue();
  
           > clearedList.add(menuitem);  > >}        >
předpokládám ale ,že problém kterej řeším může být jen následek nějaký
      
základní chyby už v inicializaci Parseru a documentu.
  
Za případné odpovědi předem děkuji Petr Roubal
      

  

package test;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Dom4J {

        /**
         * @param args
         */
        public static void main(String[] args) {
                        File fName = new File("newXml.xml");
                        SAXReader reader = new SAXReader();
                        Document document = null;
                        try {
                            document = reader.read(fName);
                        } catch (DocumentException ex) {
                            ex.printStackTrace();
                        }
                List item = document.selectNodes("/el/menutem1");
                for (Object object : item) {
                        System.out.println(((Node)object).getText());
                }

        }

}
<?xml version="1.0" encoding="UTF-8"?>

<el>
    <menutem1 >prvni položka</menutem1>    
    <menuitem2>druhá položka</menuitem2>
    <menuitem2>třetí položka</menuitem2>
</el>

Odpovedet emailem