Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   XML mit C# (https://www.delphipraxis.net/65996-xml-mit-c.html)

Luckie 23. Mär 2006 10:44


XML mit C#
 
Hallo, ich muss ein XML Dokument mit C# zusammenbauen. Dieses Dokument wird aber nicht als Datei gespeichert, sondern dann als Text verschickt.

Ich habe mich hier und im Internet schon umgesehen, aber ich weiß nicht, wie ich:
  • Ein XML Dokument erstelle
  • Einen Knoten hinzufüge
  • In ein Tag etwas hineinschreibe
  • Und wie ich dann an den gesamten Text drankomme

Beispiel:
XML-Code:
<xml>
  <projekt>
    <interner_name>SuperduperSoftware</interner_name>
    <beschreibung>geiles Teil</beschreibung>
    <status>fast fertig</status>
  </projekt>
</xml>
PS: Gibt es irgendwo ein gutes Tutorial zu diesem Thema (XML und C#)? Da bin ich mit Mr. Google nämlich auch nicht richtig fündig geworden. :(

Matze 23. Mär 2006 10:50

Re: XML mit C#
 
Hi, auf Geloleocomputing steht dazu folgendes:

Zitat:

31.5 XML-Verwendung in C#

Obwohl C# die XML-Dokumentation unterstützt (siehe Kapitel 31, C# im Detail, Abschnitt »XML-Dokumentation«), bietet C# keine Sprachunterstützung für die Verwendung von XML.

Das ist aber okay, denn die Common Language Runtime bietet umfangreiche XML-Unterstützung. In diesem Themenbereich sind besonders die Namespaces System.Data.Xml und System.Xml von Interesse.
Vielleicht hilft dir das ein wenig. Wenn nicht, sorry.

sakura 23. Mär 2006 10:55

Re: XML mit C#
 
Einfach mal so...
Code:
using System.Xml;
...
   XmlDocument xml = new XmlDocument();
   XmlNode root = xml.AppendChild(xml.CreateNode(XmlNodeType.Element, "xml", ""));
   XmlNode project = root.AppendChild(xml.CreateNode(XmlNodeType.Element, "project", ""));
   project.AppendChild(xml.CreateNode(XmlNodeType.Element, "interner_name", "")).InnerText = "SuperduperSoftware";
   project.AppendChild(xml.CreateNode(XmlNodeType.Element, "beschreibung", "")).InnerText = "geiles Teil";
   project.AppendChild(xml.CreateNode(XmlNodeType.Element, "status", "")).InnerText = "fast fertig";

   textBox1.Text = xml.InnerXml;
...:cat:...

Luckie 23. Mär 2006 11:02

Re: XML mit C#
 
@matze: Jupp. Mit dem Namespace habe ich ja schon rumprobiert.

@leidensgenosse: Danke. Sieht gut aus. ;)

So, da ich das Thema ja etwas allgemein gehalten habe, kann ich hier gleich weiter machen. ;)

Jetzt bräuchte ich den umgekehrten Weg. Also das XML Dokument (Beispiel siehe oben)= liegt mir als String vor. Wie komme ich jetzt wieder an die darin enthaltenen Informationen dran. Ich habe da was von XPath gehört. Man gibt also den Pfad zu dem Knoten irgendwie an und kann dann direkt die Informationen auslesen. Habe ich das richtig verstanden? Und wie würde das jetzt konkret aussehen?

Luckie 23. Mär 2006 13:43

Re: XML mit C#
 
Ich habe mal versucht mich vorsichtig ranzutasten:
Code:
            try
            {
                XmlTextReader xmltr = new XmlTextReader(s);
                xmltr.Read();                            
                lblCurProject.Text = xmltr.Name;
                xmltr.Close();
            }
            catch (System.Xml.XmlException xmle)
            {
                MessageBox.Show(xmle.Message);
            }
Aber ich bekomme jedesmal eine Exception, obwohl ich dachte, dass ich es ganuso mache wie in dem Beispiel aus der Hilfe. :gruebel:

Und zwar fliegt es mir hier: XmlTextReader xmltr = new XmlTextReader(s); schon um die Ohren. In s steht aber genau das drinne, was ich weiteroben zusammengebastelt habe:
Zitat:

<xml><project><internername>SuperduperSoftware</internername><beschreibung>geiles Teil</beschreibung><status>fast fertig</status></project></xml>

go7chib 23. Mär 2006 14:11

Re: XML mit C#
 
Also den XmlReader mag ich nicht und nutz ich nicht.
Ich mach das immer so:
Code:
XMlDocument xmlDoc=new XmlDocument();
XmlDocument.LoadXML(xmlstring);

XmlNode node = new xmlNode();
node=xmlDoc.SelectSingleNode("xml/project/internername"); // evtl. statt Slashes Backslashes, weiß es grad nicht, evtl. muss an den Anfang auch ein Slash
MessageBox.Show(node.Text);

Luckie 23. Mär 2006 14:20

Re: XML mit C#
 
Hm, das sieht doch schon mal schön aus. Nur sagt er mir hier:
Code:
XmlNode node = new XmlNode();
Zitat:

Es konnte keine Instanz der abstrakten Klasse oder Schnittstelle "System.Xml.XmlNode" erstellt werden.

go7chib 23. Mär 2006 14:22

Re: XML mit C#
 
ups... XmlNode node
reicht aus, es muss nicht extrta eine Objektinstanzt erzeugt werden, is mir grad eingefallen...

Waldteufel 23. Mär 2006 14:24

Re: XML mit C#
 
Also bei mir gibt's kein XmlNode.Text... :gruebel:

Edit: .NET Framework 2

go7chib 23. Mär 2006 14:27

Re: XML mit C#
 
Stimmt.. hab das grad aus'm Kopf geschrieben... hab nachgeguckt, heißt
node.InnerText


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz