Avatar billede lasserasch Juniormester
25. april 2007 - 13:45 Der er 4 kommentarer og
1 løsning

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.
Avatar billede kalp Novice
25. april 2007 - 14:15 #1
ser jo ud til at du skal bruge en anden klasse..

prøv XmlDocument

og den har en LoadXml metode.
Avatar billede lasserasch Juniormester
25. april 2007 - 14:34 #2
Ja, jeg var ved at kigge på den klasse, men kan ikke rigtig finde ud af at bladre gennem mit xml dokument og udføre de ting jeg gerne vil have det til.

Kunne du evt. give et eksempel baseret på min overstående kode, så jeg ku' få en ide om hvordan jeg skal bladre gennem dokumentet.

/Lasse
Avatar billede lasserasch Juniormester
25. april 2007 - 14:55 #3
Har vist fundet ud af det! Tror jeg nok! Brug ikke tid på dette spørgsmål lige pt... Vender tilbage om lidt, hvis det virker efter hensigten! :-)!
Avatar billede lasserasch Juniormester
26. april 2007 - 08:40 #4
Kalp smid svar... Så dette spørgsmål kan blive lukket!

/Lasse
Avatar billede kalp Novice
26. april 2007 - 11:51 #5
Godt det virker:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester