Laden...

XML Datei auslesen

Erstellt von dr4g0n76 vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.816 Views
dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 17 Jahren
XML Datei auslesen

<ASX version = "3.0">
	<ABSTRACT>Use WINAMP for AAC CD quality</ABSTRACT>
	<TITLE>Use WINAMP for aac CD quality</TITLE>
	<AUTHOR>Hit after Hit!</AUTHOR>
	<COPYRIGHT>you wont believe your ears!</COPYRIGHT>
	<MoreInfo href = "http://www.river949.com" />
	<Entry>
		<Ref href = "http://210.9.38.79:7800">
		<Ref href = "http://210.9.38.79:7800">
		<Ref href = "http://211.9.38.79:7800">
		<title>Hit After Hit!</title>
		<Banner href="http://mail.river949.com/tr20.jpg">
		<MoreInfo href ="http://www.river949.com" />
		<Abstract>click here for the river website</Abstract>
		</Banner>
	</Entry>
</ASX>

wie bekomme ich aus dieser Datei die Elemente

	&lt;Ref href = &quot;http://210.9.38.79:7800&quot;&gt;  
	&lt;Ref href = &quot;http://210.9.38.79:7800&quot;&gt;  
	&lt;Ref href = &quot;http://211.9.38.79:7800&quot;&gt;  

am einfachsten ausgelesen?

[EDIT]
mit


XmlElement root = XmlDocument.DocumentElement;
root.SelectNodes("/ASX/Entry/Ref")[0].Attributes[0]

bekomm ich nur den obersten:

	&lt;Ref href = &quot;http://210.9.38.79:7800&quot;&gt;

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

59 Beiträge seit 2005
vor 17 Jahren

Hallo dr4g0n76.

Versuch es mal mit System.Xml.XmlNodeList.

 
...
  System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();

  xmlDoc.Load(stream);
  System.Xml.XmlNodeList items = xmlDoc.SelectNodes("/ASX/Entry/Ref");

  for (int i = 0; i < items.Count; i++) {
    // Kann dann auf die einzelnen Nodes zugegriffen werden
    ...
  }

...

Habe ich jetzt einfach so eingetippt. Ist nicht getestet.

Gruß

HoGi

2b | !2b = 0xff

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 17 Jahren

Nee, danke. Soweit war ich schon.

Das liefert auch nur das erste Ref-Element.
Ich brauche aber alle 3.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 17 Jahren

Folgende unschöne Lösung macht was ich will:


  XmlElement root = XmlDocument.DocumentElement;
                XmlNodeList list = root.SelectNodes("Entry//*");

                ArrayList al = new ArrayList();
                for (int i = 0; i < list.Count; i++)
                {
                    XmlNode node = list.Item(i);
                    if (node.Name == "Ref")
                    {
                        al.Add(node.Attributes[0].Value);
                    }
                }

                string[] saLink = new string[al.Count];
                for (int i = 0; i < al.Count; i++)
                {
                    saLink[i] = (string)al[i];
                }
                return saLink;

Aber das muss doch auch "richtig" gehen.
Ich hatte auch zuerst gedacht SelectNodes sei richtig. Keine Ahnung, warum das hier nicht funktioniert.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

59 Beiträge seit 2005
vor 17 Jahren

Hallo dr4g0n76.

Ich weiß nicht ob es damit zusammenhängt, aber die "Ref" Nodes sind nicht geschlossen. Fehlen da nicht am Ende ein paar "/"?

Nicht hauen, die Frage ist wirklich ernst gemeint.

Gruß

HoGi

2b | !2b = 0xff

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 17 Jahren

Ja, stimmt, das kann aber in diesem Falle vorkommen.

Die ASX-Datei ist eine Stream-Meta-Datei, die nicht immer unbedingt xml-konform (also wohlgeformt) ist.

Und ich muss halt die Dateien auslesen.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

C
156 Beiträge seit 2004
vor 17 Jahren

Hallo Zusammen,

ich persönlich frage mich ob das XML überhaupt sauber ist...

..
<Entry>
        <Ref href = "http://210.9.38.79:7800">
        <Ref href = "http://210.9.38.79:7800">
        <Ref href = "http://211.9.38.79:7800">
        <title>Hit After Hit!</title>

...

somit ist "Ref href" kein Elemet sonder ein Attribut also eine Eigenschaft... diese Eigenschaft kann aber doch nicht mehre Werte haben... also ich frage mich warum "Ref href" kein Elemet ist das du dann ganz bequem in einer List mit einer WHILE schleife abarbeiten könntest...

Oder hab ich hier was total falsch verstanden.

Somit natürlich keine Lösung sondern hier eher eine Verständnisfrage

Gruß

Chaossurfer