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
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);
}
}
FILE XML:
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>
dove sbaglio?
Grazie a tutti