Newsgroup: it.comp.java
Titolo: Stringa XPath

Ho il seguente file xml:
<?xml version="1.0" encoding="UTF-8"?>
<Contatti>
  <Persona>
    <Cognome>rossi</Cognome>
    <Nome>marco</Nome>
    <Indirizzo>Via regina elena</Indirizzo>
    <Telefono>081894</Telefono>
    <Mail>
ro...@tin.it
</Mail>
  </Persona>
  <Persona>
    <Cognome>bianchi</Cognome>
    <Nome>andrea</Nome>
    <Indirizzo>lontano 89</Indirizzo>
    <Telefono>045678</Telefono>
    <Mail>
bi...@libero.it
</Mail>
  </Persona>
</Contatti>
Dovrei creare una stringa xPath che mi restituisca solo il valore di ciň che
č fra 2 o piu tag(ad esempio <name>andrea</name> della seconda Persona).
Chi mi puň aiutare?
Grazie
Nicola
--------------------------------
Inviato via 
http://usenet.libero.it


Intendi i nodi di testo forse?

 
Spiegati meglio..... :-)

Il 22 Mag 2003, 10:00, 
giovann...@hotmail.com
 (Giovanni Martone) ha
scritto:

Allora io vorrei fare in modo che il risultato di xPath sia esclusivamente
ciň
che č compreso fra tue tag,ad esempio dal tag <name>andrea</name> vorrei che
venisse
restituito solo la stringa "andrea",ma non so costruire la stringa di
comandi che deve essere data a xPath.
Spero di essere stato piů chiaro e grazie per l'aiuto.


Se non ho capito male l'espressione xPath dovrebbe essere:
Contatti/Persona/Nome


 Contatti/Persona/Nome
Si avevo gia provato ed il risultato č:
<?xml version="1.0"?>
<Nome xmlns:src="
http://xml.apache.org/xindice/Query
" src:col="/db/nicola"
src:key="1">marco</Nome>
<?xml version="1.0"?>
<Nome xmlns:src="
http://xml.apache.org/xindice/Query
" src:col="/db/nicola"
src:key="1">andrea</Nome>
a me invece interessa che visualizzi solo:
marco
andrea
insomma senza tutta quella roba!!!:-).Ho provato anche ad aggiungere text()
(cioč cosě: Contatti/Persona/Nome/text()) ma il risultato č stato "nulla"
cioč:
C:>
Se puň essere di aiuto, sto usando Xindice di Apache


beh, questo è corretto, l'xpath ti ritorna tutti i nodi che "matchano", in
questo caso due. Non ho mai usato Xindice, ma lavoro con altri db XML
commerciali e, il metodo java a cui passi l'espressione xPath dovrebbe
ritornarti un oggetto di tipo NodeList che rappresenta la lista di tutti i
nodi che la query ha recuperato. Esistono metodi per ciclare su un oggetto
NodeList e ottenere oggetti di tipo Node, da questi oggetti puoi ottenere i
nodi figli ti tipo text che sono i tuoi "marco" e "andrea".


 nodi figli ti tipo text che sono i tuoi "marco" e "andrea".
saresti cosi gentile da farmi vedere o inviarmi un'esempio,poichè è proprio
questo
che non sono riuscito a fare.
Grazie ancora



Questo è un esempio di codice, l'xml lo ottengo parsando un file che
contiene l'xml che mi hai fatto vedere.
-- code start --
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
public class Test {
    public static void main(String[] args) {
        try
        {
            Document doc = null;
            DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            doc = builder.parse("test.xml");
            Element el = doc.getDocumentElement();
            NodeList nl = el.getElementsByTagName("Nome");
            for (int i = 0; i < nl.getLength(); i++)
            {
                Element selEl = (Element)nl.item(i); //il nodo
<Nome>valore<Nome>
                System.out.println(selEl.getFirstChild().getNodeValue());
//il valore del nodo Nome
            }
        }catch(Exception e)
        {e.printStackTrace();}
    }
}
-- code end --
ecco l'xml come è nel file text.xml
-- code start --


Ti ringrazio, il tuo esempio mi servirą molto, solo che il "capo" mi ha
detto
che devo usare esclusivamente le Api xml:db di Xindice!!
Grazie 1000
