Forum: PC-Programmierung xml mit c# auslesen. Programm stürzt ab


von Mark (Gast)


Lesenswert?

Hallo,
ich möchte mit C# eine xml auslesen. Diese ist wie folgt aufgebaut:

<?xml version="1.0" encoding="utf-8" ?>
<signlist version="1" 
url12="http://imgcache.qq.com/club/item/indivsign/itemlist/$PAGEID$/12_$ITEMID$.png"; 
url24="http://imgcache.qq.com/club/item/indivsign/itemlist/$PAGEID$/24_$ITEMID$.png">;
 <list>

  <sign id="157" v="1" l="0" n="v157" d="坊黄" />

  <sign id="155" v="1" l="0" n="v155" d="丽丽" />

  <sign id="142" v="1" l="0" n="v142" d="哪姐" />

  <sign id="156" v="1" l="0" n="v156" d="早丽" />

  <sign id="103" v="1" l="0" n="v103" d="宇莹" />
...
...

 </list>
</signlist>



Ich möchte gerne alle namen in einer Liste schreiben. Dazu möchte ich 
mir diese zunächst erst einmal so auf der Console ausgeben.
1
            XmlDocument doc = new XmlDocument();
2
            doc.Load(pfad);
3
            
4
            XmlElement root = doc.DocumentElement;
5
            XmlNode node = doc.SelectSingleNode("/signalist/list");
6
            foreach (XmlNode daten in node.ChildNodes)
7
            {
8
                Console.WriteLine(daten.Attributes["d"].InnerText);
9
            }
10
11
12
            Console.WriteLine();
13
            Console.WriteLine("code finished");
14
            Console.ReadKey();

doch leider stürzt das Programm immer ab. Weiss einer, was daran falsch 
ist?

von Frank (Gast)


Lesenswert?

Normalerweise gibt es da eine Exception dazu.
Also rück mal raus damit...

von Mark (Gast)


Lesenswert?

Oh, natürlich

An unhandled exception of type 'System.NullReferenceException' occurred 
in read_xml.exe

von Dieter Graef (Gast)


Lesenswert?

Das könnte an der UTF8 Codierung liegen.
Bei mir siehts so aus:

byte[] fileBytes;
string XMLfile;


fileBytes=File.ReadAllBytes(pfad);
string XMLfile = System.Text.Encoding.UTF8.GetString(fileBytes);
XmlDocument doc = new XmlDocument();
doc.Load(new StringReader(XMLfile));

m.f.G.
Dieter Gräf

von Mark (Gast)


Lesenswert?

leider komme ich damit nicht weiter.

Jetzt bekomme ich :

An unhandled exception of type 'System.Xml.XmlException' occurred in 
System.Xml.dll

von Peter II (Gast)


Lesenswert?

man sollte halt vorher auch mal prüfen ob das attribut vorhanden ist

var x = daten.Attributes["d"]
if ( x != null ) {
   Console.WriteLine(x.InnerText);
}

von Marc B. (tvdog)


Lesenswert?

Bei dir stimmt entweder dein Xml - File nicht oder der XPath - Ausdruck 
in SelectSingleNode ist nicht korrekt:

Xml-File:

<signlist version="1" ...


XPath - Ausdruck:
SelectSingleNode("/signalist/list")

Da ist ein "a" zuviel drin.

Dadurch ist node == null was zur NullReferenceException führt.

Gruß

von Mark (Gast)


Lesenswert?

Marc B. schrieb:
> Da ist ein "a" zuviel drin.

Tatsache. Das wars.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.