PDA

View Full Version : [C#] Parsing XML da Stringa


race2
21-02-2008, 11:24
Salve, il mio problema è fare il Parsing di un XML che ho in una Stringa,

contenuto della stringa:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE XP SYSTEM "XP.dtd">
<XP>
<Start>
<Name>MyMame</Name>
<Num>321</Num>
<Ip>192.168.0.10</Ip>
<List>
<Param>
<Name>Msg</Name>
<Value>a</Value>
</Param>
</List>
</Start>
</XP>


come posso fare per interrogare ad esempio:
il nodo <Name> su <Start> ed estrarre il suo valore ???
il nodo <Name> su <Param> su <List> ed estrarre il suo valore ???

e per ultimo,

come devo fare per generare una stringa come questa ma inserire i Valori che decido io ???

mi potete dare una mano ???

tomminno
21-02-2008, 15:45
Salve, il mio problema è fare il Parsing di un XML che ho in una Stringa,

contenuto della stringa:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE XP SYSTEM "XP.dtd">
<XP>
<Start>
<Name>MyMame</Name>
<Num>321</Num>
<Ip>192.168.0.10</Ip>
<List>
<Param>
<Name>Msg</Name>
<Value>a</Value>
</Param>
</List>
</Start>
</XP>


come posso fare per interrogare ad esempio:
il nodo <Name> su <Start> ed estrarre il suo valore ???
il nodo <Name> su <Param> su <List> ed estrarre il suo valore ???


Devi usare la classe XMLDocument


XMLDocument document = new XMLDocument();
try
{
document.LoadXML(stringaDati);
}
catch(XmlException ex)
{}
XmlNodeList nodeList = document.GetElementsByTagName("Start");
foreach(XMLNode node in nodeList)
{
if (node.Name == "Name")
...
}



e per ultimo,

come devo fare per generare una stringa come questa ma inserire i Valori che decido io ???

mi potete dare una mano ???

Per crearlo devi usare sempre la classe XMLDocument ma usare i metodi CreateDocumentType,CreateElement,ecc

race2
22-02-2008, 09:34
Ti ringrazio molto, sei stato risolutivo, ho fatto una piccola modifica dato che i nodi sono un numero finito:


XmlDocument document = new XmlDocument();

XmlNodeList nodeList = document.GetElementsByTagName("Start");

Console.WriteLine(nodeList[0].InnerXml);



gtrazie ancora...