97 messaggi dal 25 gennaio 2007
Io ho un file Xml, così strutturato.
<dataset>
-<nodo>
     <datonodo1>...</datonodo1>
     <datonodo2>...</datonodo2>
     <datonodo3>...</datonodo3>
     <datonodo4 id="1">...</datonodo4>
     <datonodo4 id="2">...</datonodo4>
     <datonodo4 id="3">...</datonodo4>
</nodo>
-<nodo>
     <datonodo1>...</datonodo1>
     <datonodo2>...</datonodo2>
     <datonodo3>...</datonodo3>
     <datonodo4 id="1">...</datonodo4>
     <datonodo4 id="2">...</datonodo4>
     <datonodo4 id="3">...</datonodo4>
</nodo>
-<nodo>
     <datonodo1>...</datonodo1>
     <datonodo2>...</datonodo2>
     <datonodo3>...</datonodo3>
     <datonodo4 id="1">...</datonodo4>
     <datonodo4 id="2">...</datonodo4>
     <datonodo4 id="3">...</datonodo4>
</nodo>
</dataset>

Io dovrei leggere datonodo4 selezionando di volta in volta un id diverso, io ho provato utilizzando questo codice:
Dim info = nodo("datonodo4").innertext
Ma in questo modo leggo solo datonodo4 con id=1. Ho provato con altri metodi tipo Attributes o GetAttributes ma con scarsi risultati, con questi metodi recupero il valore dell'id. Io invece vorrei poter specificare il valore dell'id in modo tale da poter visualizzare il contenuto di datonodo4.
RobyT83 wrote:
Io dovrei leggere datonodo4 selezionando di volta in volta un id diverso, io ho provato utilizzando questo codice:
Dim info = nodo("datonodo4").innertext

che non essendo tipizzato, non si capisce bene di che tipo sia nodo nè info.
Ma in questo modo leggo solo datonodo4 con id=1. Ho provato con altri metodi tipo Attributes o GetAttributes ma con scarsi risultati, con questi metodi recupero il valore dell'id. Io invece vorrei poter specificare il valore dell'id in modo tale da poter visualizzare il contenuto di datonodo4.

hai provato con XPath?
poi, vuoi leggere tutti i nodi di quel tipo, beccarne uno a caso, prendere quello con l'ID che ti serve, o cos'altro?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
97 messaggi dal 25 gennaio 2007
Daniele Bochicchio ha scritto:
che non essendo tipizzato, non si capisce bene di che tipo sia nodo nè info.


nodo è di tipo XmlNode
nodo = doc.DocumentElement

per gli altri nodi senza attributo id io li ho letti in questo modo:
Dim agenzia_id = nodo("agenzia_id").InnerText


hai provato con XPath?
poi, vuoi leggere tutti i nodi di quel tipo, beccarne uno a caso, prendere quello con l'ID che ti serve, o cos'altro?


Con Xpath non ho provato, anche se avevo letto in giro per libri e per internet di questa possibilità, perché è la prima volta che mi imbatto nella lettura di file xml e non avveo ben chiaro il funzionamento.

Poi io vorrei leggere un nodo con un determinato ID.
RobyT83 ha scritto:
io vorrei leggere un nodo con un determinato ID.


Allora è matematico: XPath è la soluzione al tuo problema!

La sintassi dovrebbe essere una cosa di questo tipo:

//datonodo4[@id='4']


Su XPath c'è un sacco di documentazione online (basta una ricerchina); puoi partre ad esempio da questo tutorial: http://www.w3schools.com/xpath/default.asp

Un'ultima nota: evita di usare l'attributo "id" a meno che questo non sia univoco all'interno dell'intero documento.

HTH

Matteo Casati
GURU4.net
78 messaggi dal 01 febbraio 2007
m.casati ha scritto:

Un'ultima nota: evita di usare l'attributo "id" a meno che questo non sia univoco all'interno dell'intero documento.


Perchè? viene contata come in una pagina html?

per RobyT83:
Se vuoi io avevo improntato una classe per leggere degli xml a schema fisso, se vuoi te lo invio..
97 messaggi dal 25 gennaio 2007
Ok adesso mi andrò a documentare su Xpath
97 messaggi dal 25 gennaio 2007
dubbio ha scritto:

per RobyT83:
Se vuoi io avevo improntato una classe per leggere degli xml a schema fisso, se vuoi te lo invio..


Ti ringrazio ma preferisco sbatterci la testa per benino

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.