Ciao a tutti,
non sono un' espertone di c# e di XML, mi sono cimentato
nel creare un software che ha come base dati un file XML.
Il problema è che non riesco, dato un valore, a fare il next ed il previous sui nodi.
Ho fatto un po di prove è ho ottenuto un discreto risultato,
usando NextSibling e PreviousSibling riesco a iterare.
Ma se il nodo contiene un elemento con valore ad "A" non dovrebbe visualizzarlo invece....
posto il codice che forse è meglio...
in rosso il problema
FILE XML:codice:....... XmlDocument rootnode = new XmlDocument(); rootnode.Load(xdocpath); XmlNode nodeset = rootnode.DocumentElement; XmlNode nnext; XmlNodeList nnnext; XmlNode h; XmlNode o; string k; nnnext = nodeset.SelectNodes("/nodorut/figli[codicefn='" + coderef + "' and stators='A']"); foreach (XmlNode n in nnnext) { if (tpact == "S") { h = n.NextSiblingPreviousSibling; Console.WriteLine(h.InnerText); } else if (tpact == "P") { h = n.PreviousSibling; k = h.SelectSingleNode("/nodorut/figli[stators='A']").InnerText; if (k == "A") { Console.WriteLine(h.InnerText); } } else { h = n; Console.WriteLine(h.InnerText); } }
dove sbaglio?codice:<!DOCTYPE nodorut[ <!ELEMENT nodorut (figli+)> <!ELEMENT codicefn (#PCDATA)> <!ELEMENT nome (#PCDATA)> <!ELEMENT eta (#PCDATA)> <!ELEMENT stators (#PCDATA)> <!ATTLIST figli codicefn ID #REQUIRED> <!ATTLIST figli stators CDATA #REQUIRED> ]> <nodorut> <figli> <codicefn>234a</codicefn> <nome>pippo</nome> <eta>10</eta> <stators>d</stators> </figli> <figli> <codicefn>235a</codicefn> <nome>pluto</nome> <eta>15</eta> <stators>a</stators> </figli> <figli> <codicefn>236a</codicefn> <nome>nello</nome> <eta>13</eta> <stators>a</stators> </figli> </nodorut>![]()
Grazie a tutti

Rispondi quotando
