Laden...

XML auslesen in Silverlight

Erstellt von Andreaz vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.042 Views
Thema geschlossen
A
Andreaz Themenstarter:in
53 Beiträge seit 2011
vor 13 Jahren
XML auslesen in Silverlight

Hallo,

wie kann ich mit C# in einem Silverlight-Projekt am einfachsten Inhalte einer XML-Datei auslesen? Im folgenden ein Beispiel meiner XML_Datei wie kann ich Inhalte meiner einzelnen Channels auslesen? Einmal bräuchte ich die id und einmal den Inhalt der Description.


<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<screen xmlns='http://www.st.de/' >
 <channels>
    <channel id='2207' serial='201103041435' >
       <description>Test1</description>
    </channel>
    <channel id='2201' serial='201103041435' >
       <description>Test2</description>
	</channel>
    <channel id='2202' serial='201103041405' >
      <description>Test3</description>
    </channel>
  </channels>
</screen>

D
615 Beiträge seit 2009
vor 13 Jahren

Hallo

Stichworte:
XML Serialisierung (MSDN)
XDocument (MSDN)

Beste Grüsse

Diräkt

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Andreaz,

du hast in Silverlight mehrere Möglichkeiten, eine XML-Datei zu lesen. Damit du dir einen Überblick verschaffen kannst, würde ich dir raten, einfach mal zu googeln. Du findest zahlreiche Informationen über das Thema! Ich persönlich bevorzuge LINQ to XML.

zero_x

A
Andreaz Themenstarter:in
53 Beiträge seit 2011
vor 13 Jahren

Besten Dank für die Anregungen.

Habe mal gleich eine Frage:

Ich habe in C# eine Funktion, die eine XML-Datei ausliest. Wenn ich die XML-Datei-Version 1 einlese (s.Codesnipped), wird alles in der Console richtig ausgegeben, wenn ich die XML-Datei-Version 2 einlese, wird der foreach-Block komplett uebersprungen. Der einzige Unterschied an der XML-Datei liegt darin, das im ersten Tag Attribute enthalten sind. Muss ich in diesem Fall die XML-Datei anders behandeln?

Eine kleine Anregung würd mir bestimmt weiterhelfen.
Die Firma dankt!


XmlDocument data = new XmlDocument();
data.Load("C:/...../test.xml");

foreach (XmlNode node in data.SelectNodes("screen/Tutorials/Tutorial"))
{
      Console.WriteLine(node.Attributes["id"].Value);
      Console.WriteLine(node.SelectSingleNode("Author").InnerText.ToString());
}

XML-Datei-Version 1:


<?xml version="1.0" encoding="utf-8" ?>
<screen>
  <Tutorials>
    <Tutorial id="1">
      <Author>The Reddest</Author>
      <Title>
        Creating an XP Style WPF Button with Silverlight
      </Title>
      <Date>2/20/2008</Date>
    </Tutorial>
    <Tutorial id="1">
      <Author>The Fattest</Author>
      <Title>
        Flex And Yahoo Maps
      </Title>
      <Date>2/12/2007</Date>
    </Tutorial>
    <Tutorial id="1">
      <Author>The Tallest</Author>
      <Title>
        WPF Tutorial - Creating A Custom Panel Control
      </Title>
      <Date>2/18/2008</Date>
    </Tutorial>
  </Tutorials>
</screen>

XML-Datei-Version2:


<?xml version="1.0" encoding="utf-8" ?>
<screen xmlns='http://www.blabla.de/' time='20110307071612'>
  <Tutorials>
    <Tutorial id="1">
      <Author>The Reddest</Author>
      <Title>
        Creating an XP Style WPF Button with Silverlight
      </Title>
      <Date>2/20/2008</Date>
    </Tutorial>
    <Tutorial id="1">
      <Author>The Fattest</Author>
      <Title>
        Flex And Yahoo Maps
      </Title>
      <Date>2/12/2007</Date>
    </Tutorial>
    <Tutorial id="1">
      <Author>The Tallest</Author>
      <Title>
        WPF Tutorial - Creating A Custom Panel Control
      </Title>
      <Date>2/18/2008</Date>
    </Tutorial>
  </Tutorials>
</screen>
A
Andreaz Themenstarter:in
53 Beiträge seit 2011
vor 13 Jahren

Hallo,

habe inzwischen herausgefunden, dass er meine XML-Datei (Version 2) nicht einlesen kann, weil hier ein Namespace ohne Präfix angegebn wird.

Jetzt verwende ich die Klasse XmlNamespaceManager um meinen Namespace hinzuzufügen. Doch wir füge ich einen Namespace ohne Präfix hinzu? Wenn ich die Methode 'AddNamespace' verwende und den Präfix-Strig einfach leer lasse, wird der Default-Namespace geändert. Müsste denn nicht eigentlich der Namespace mit dem Präfix "xmlns" geändert werden? Nur diesen kann ich leider nicht ändern!

Im folgenden mein aktueller Code dazu:
Leider wird jedesmal die foreach-Schleife uebersprungen.


 XmlDocument data = new XmlDocument();
 data.Load(file);

 XmlNamespaceManager ns = new XmlNamespaceManager(data.NameTable);
 ns.AddNamespace("", data.DocumentElement.NamespaceURI);

 String n = data.DocumentElement.NamespaceURI;

      foreach (XmlNode node in data.SelectNodes("screen/channels/channel", ns))
      {
                Console.WriteLine(node.Attributes["id"].Value);
                Console.WriteLine(node.SelectSingleNode("Author").InnerText.ToString());
       }

5.742 Beiträge seit 2007
vor 13 Jahren

Die Antwort findet sich im Crosspost.

==> Geschlossen

Thema geschlossen