Streng til XML Fejler for mig.
Hejsa.Måske ryster i på hovedet nu og fortæller mig at jeg griber det forkert an, i så fald så fortæl mig meget gerne hvordan jeg kan gøre dette nemmere...
Jeg har nedestående stykke kode.
For mig at se, så burde det kunne løbe igennem en streng i XML format. Men Koden fejler på linien : "XMLTextReader XmlR = new XmlTextReader(XML);"
Det er helt sikkert fordi det er en streng jeg forsøger at parse som XML og ikke et dokument. Men hvad kan man så gøre i stedet for? Får en Exception med beskeden "Ugyldige tegn i stien".
Nogle forslag til løsninger???
Her min kode :
------------------------
public void LoadXML(String XML)
{
try
{
XmlTextReader XmlR;
Int32 State = 0;
Int32 SubState = 0;
String sName = "";
XmlR = new XmlTextReader(XML);
while (XmlR.Read())
{
switch (XmlR.NodeType)
{
case XmlNodeType.Element:
switch (XmlR.Name)
{
case "GENERELINFO": State = 1; break;
case "PRODUCTDATA": State = 2; break;
}
sName = XmlR.Name;
break;
case XmlNodeType.Text:
switch (State)
{
case 1:
switch (sName)
{
case "NAME": textBox4.Text = XmlR.Value; break;
case "DESCRIPTION": textBox3.Text = XmlR.Value; break;
case "FORKALKDATE": dateTimePicker1.Value = Convert.ToDateTime(XmlR.Value); break;
case "SAVEDATE": dateTimePicker2.Value = Convert.ToDateTime(XmlR.Value); break;
case "FORKALKDONEBY": textBox2.Text = XmlR.Value.ToUpper(); break;
case "PARTKALKDONEBY": textBox1.Text = XmlR.Value.ToUpper(); break;
case "RESULTKG": textBox6.Text = XmlR.Value; break;
}
break;
case 2:
switch (sName)
{
case "EXPENCES": SubState = 1; break;
case "RAWPRODUCTS": SubState = 2; break;
case "BIPRODUCTS": SubState = 3; break;
case "ITEM": dataGridView1.Rows.Add();
switch (SubState)
{
case 1: dataGridView1[0, dataGridView1.Rows.Count].Value = "Omkostning"; break;
case 2: dataGridView1[0, dataGridView1.Rows.Count].Value = "Råvare"; break;
case 3: dataGridView1[0, dataGridView1.Rows.Count].Value = "Bi Produkt"; break;
}
break;
case "NAME": dataGridView1[2, dataGridView1.Rows.Count].Value = XmlR.Value; break;
case "REFERENCE": dataGridView1[3, dataGridView1.Rows.Count].Value = XmlR.Value; break;
case "PRODUCTNUMBER": dataGridView1[1, dataGridView1.Rows.Count].Value = XmlR.Value; break;
case "AMOUNT": dataGridView1[4, dataGridView1.Rows.Count].Value = XmlR.Value; break;
}
break;
}
break;
}
}
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
-----------------------
Min XML Streng ser f.eks. således ud (Har dog skåret den noget ned...):
<KALKDATA><GENERELINFO><NAME>30923720</NAME><DESCRIPTION></DESCRIPTION><FORKALKDATE>22-01-2007 00:00:00</FORKALKDATE><SAVEDATE>21-03-2007 16:36:18</SAVEDATE><FORKALKDONEBY>BC</FORKALKDONEBY><PARTKALKDONEBY>lr</PARTKALKDONEBY><RESULTKG>520</RESULTKG><ACTIVE>True</ACTIVE></GENERELINFO><PRODUCTDATA><EXPENCES><ITEM><NAME>Gas Forbrug</NAME><PRICE>0,20</PRICE><REFERENCE>Manuelle Priser</REFERENCE><PRODUCTNUMBER>99999004</PRODUCTNUMBER><AMOUNT>0</AMOUNT></ITEM><ITEM><NAME>Film L?g</NAME><PRICE>1,50</PRICE><REFERENCE>Manuelle Priser</REFERENCE><PRODUCTNUMBER>100010</PRODUCTNUMBER><AMOUNT>54,17</AMOUNT></ITEM>... ect.
