{"id":55000232,"date":"2020-08-01T00:00:00","date_gmt":"2020-11-26T10:56:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=232"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"XML_mit_NET","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/XML_mit_NET\/","title":{"rendered":"XML mit .NET"},"content":{"rendered":"<p><b>XML ist eines der bekanntesten Datenaustauschformate. XML bedeutet Extensible Markup Language und erlaubt das Speichern von Daten in Textdateien in einem hierarchisch strukturierten Format. Dies wird zum Beispiel in den Konfigurationsdateien eines Visual Studio-Projekts genutzt &#8211; und auch XAML, die Sprache zum Definieren von WPF-Benutzeroberfl&auml;chen, ist auf XML aufgebaut. Wenn Daten zwischen zwei nicht kompatiblen Systemen ausgetauscht werden sollen, kommt oft XML zum Einsatz. Auch wenn Sie Daten von einem Webservice abrufen wollen, kommen die Daten in vielen F&auml;llen im XML-Format. Je nach Webservice k&ouml;nnen Sie diesem auch Daten im XML-Format schicken, die dann etwa durch Speichern in einer Datenbank weiterverarbeitet werden. Grund genug, sich XML einmal genauer anzusehen und zu schauen, welche M&ouml;glichkeiten .NET f&uuml;r das Lesen, Bearbeiten und Erstellen von XML-Dokumenten bietet.<\/b><\/p>\n<p><b>Grundlagen zu XML<\/b><\/p>\n<p>XML-Dokumente enthalten strukturierte Daten im ASCII-Format &#8211; so k&ouml;nnen Anwendungen von verschiedenen Plattformen den Inhalt verstehen. Dementsprechend k&ouml;nnen Sie XML-Dokumente auch in einem einfachen Texteditor &ouml;ffnen und bearbeiten. XML-Dokumente, die als Datei gespeichert werden, erhalten die Dateiendung <b>.xml<\/b>, also beispielsweise <b>Kunden.xml<\/b>.<\/p>\n<p><b>Ein XML-Dokument in Visual Studio anlegen<\/b><\/p>\n<p>Auch wenn XML-Dokumente keinen speziellen Editor ben&ouml;tigen, wollen wir die F&auml;higkeiten von Visual Studio nutzen. Also &ouml;ffnen Sie Visual Studio und legen mit <b>Datei|Neu|Datei&#8230; <\/b>eine neue Datei an. W&auml;hlen Sie im nun erscheinenden Dialog <b>Neue Datei <\/b>den Eintag <b>XML-Datei <\/b>aus. Dies f&uuml;gt eine neue, leere XML-Datei namens <b>XMLFile1.xml <\/b>hinzu, die im Verzeichnis <b>C:\\Users\\<Benutzername>\\source\\repos <\/b>gespeichert wird. Erfreulicherweise werden Fehler im XML-Dokument von Visual Studio im Bereich <b>Fehlerliste <\/b>angezeigt (siehe Bild 1). Hier sehen Sie direkt, dass es durchaus Anforderungen an XML-Dokumente gibt &#8211; in diesem Fall wird das Fehlen eines Stammelements bem&auml;ngelt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2020_04\/pic_232_001.png\" alt=\"Ein neues, leeres XML-Dokument\" width=\"549,6265\" height=\"267,4958\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ein neues, leeres XML-Dokument<\/span><\/b><\/p>\n<p><b>XML-Dokument als solches definieren<\/b><\/p>\n<p>Damit ein XML-Dokument als solches erkannt werden kann, geben wir in der ersten Zeile einen sogenannten Prolog an. Dieser hat eine andere Syntax als die &uuml;brigen XML-Zeilen, der Ihnen von der Programmiersprache PHP bekannt vorkommen k&ouml;nnte: <\/p>\n<pre>&lt;xml version=\"1.0\" &gt;<\/pre>\n<p>Hier k&ouml;nnen Sie zus&auml;tzlich noch die Kodierung des Dokuments angeben, hier zum Beispiel <b>utf-8<\/b>:<\/p>\n<pre>&lt;xml version=\"1.0\" encoding=\"utf-8\"&gt;<\/pre>\n<p><b>Elemente eines XML-Dokuments<\/b><\/p>\n<p>Wie im Screenshot oben zu sehen, enth&auml;lt ein XML-Dokument neben der Zeile mit der XML-Version und der Kodierung also mindestens ein Element auf der obersten Ebene. Ein solches Element hat entweder ein &ouml;ffnendes und ein schlie&szlig;endes Tag-Element (Starttag und Endtag) oder ein abgeschlossenes Tag-Element (Leertag). Zwischen dem &ouml;ffnenden und dem schlie&szlig;enden Tag-Element befinden sich untergeordnete Elemente.<\/p>\n<p>Ein abgeschlossenes Tag-Element enth&auml;lt keine weiteren untergeordneten Elemente. Ein Element mit &ouml;ffnendem und schlie&szlig;endem Tag sieht wie folgt aus:<\/p>\n<pre>&lt;Beispielelement&gt;&lt;\/Beispielelement&gt;<\/pre>\n<p>Der Name des Elements muss im &ouml;ffnenden wie im schlie&szlig;enden Tag genau gleich geschrieben sein &#8211; das gilt auch f&uuml;r Gro&szlig;- und Kleinschreibung. Das geschlossene Element sieht so so:<\/p>\n<pre>&lt;Beispielelement \/&gt;<\/pre>\n<p>Das Element wird durch den Schr&auml;gstrich vor dem Gr&ouml;&szlig;er-Zeichen als abgeschlossen markiert. Beide Varianten reichen Visual Studio schon aus, um die Fehlermeldung verschwinden zu lassen. Jedes offene Element kann ein oder mehrere Unterelemente enthalten:<\/p>\n<pre>&lt;Hauptelement&gt;\r\n     &lt;Unterelement \/&gt;\r\n     &lt;Unterelement&gt;&lt;\/Unterelement&gt;\r\n&lt;\/Hauptelement&gt;<\/pre>\n<p><b>Hauptelement <\/b>und <b>Unterelement <\/b>sind die Namen der Elemente. Die eigentlichen Daten werden an zwei Stellen gespeichert: in Attributen oder als Werte von Elementen. Attribute werden innerhalb des &ouml;ffnenden Tags hinter dem Elementnamen angegeben, und zwar durch Attributname und Attributwert. Jeder Attributname darf nur einmal je Element vorkommen, der Attributwert muss in Hochkommata oder Anf&uuml;hrungszeichen angegeben werden:<\/p>\n<pre>&lt;Hauptelement Beispielattribut=\"Beispielwert\"&gt;&lt;\/Hauptelement&gt;<\/pre>\n<p>Bei geschlossenen Elementen landet das Attribut ebenfalls hinter dem Elementnamen:<\/p>\n<pre>&lt;Hauptelement Beispielattribut=\"Beispielwert\" \/&gt;<\/pre>\n<p>Au&szlig;erdem k&ouml;nnen Sie f&uuml;r jedes Element alternativ zu weiteren untergeordneten Elementen auch eine Zeichenkette als Wert des Elements angeben:<\/p>\n<pre>&lt;Elementname&gt;Elementinhalt&lt;\/Elementname&gt;<\/pre>\n<p>Ein Element mit einer Zeichenkette als Inhalt kann keine weiteren Elemente enthalten.<\/p>\n<p><b>Elementnamen verwenden<\/b><\/p>\n<p>F&uuml;r die Elementnamen gelten bestimmte Regeln:<\/p>\n<ul>\n<li>Der Elementname folgt unmittelbar auf die &ouml;ffnende spitze Klammer beziehungsweise beim schlie&szlig;enden Tag hinter dem Schr&auml;gstrich.<\/li>\n<li>Der Elementname darf keine Leerzeichen enthalten.<\/li>\n<li>Der Elementname darf Buchstaben, Ziffern, Unterstrich, Bindestrich, Punkt und Doppelpunkt enthalten. Doppelpunkte d&uuml;rfen allerdings nur hinter Namespaces angegeben werden &#8211; mehr dazu weiter unten. Als erstes Zeichen d&uuml;rfen nur Buchstaben zum Einsatz kommen.<\/li>\n<li>Der Elementname darf nicht mit einer Ziffer oder mit der Zeichenfolge <b>xml <\/b>beginnen (letzteres wird von Visual Studion nicht bem&auml;ngelt).<\/li>\n<\/ul>\n<p><b>Wohlgeformtheit von XML-Dokumenten<\/b><\/p>\n<p>Die wichtigsten Kriterien f&uuml;r die Wohlgeformtheit eines XML-Dokuments lauten also:<\/p>\n<ul>\n<li>Das Dokument muss eine Verarbeitungsanweisung enthalten (<b><xml version=\"1.0\"><\/b>).<\/li>\n<li>Das Dokument besitzt in der ersten Ebene genau ein Element.<\/li>\n<li>Jedes Element muss geschlossen werden (<b><Beispielelement><\/Beispielement><\/b> oder <b><Beispielelement \/><\/b>)<\/li>\n<li>Start- und Endtags m&uuml;ssen den gleichen Namen haben, auch bez&uuml;glich der Gro&szlig;- und Kleinschreibung.<\/li>\n<li>Die Start- und Endtags werden paarweise verschachtelt, das hei&szlig;t, alle innerhalb eines &uuml;bergeordneten Elements angelegten Unterelemente m&uuml;ssen erst wieder geschlossen werden, bevor das &uuml;bergeordnete Element geschlossen wird.<\/li>\n<\/ul>\n<p><b>Unterschied zwischen Attributen und Elementen<\/b><\/p>\n<p>Wenn Sie als Wert eine einfache Zeichenkette verwenden wollen, k&ouml;nnen Sie diese gleichwertig f&uuml;r ein Attribut oder f&uuml;r ein Unterelement angeben. Ein <b>Kunde<\/b>-Element mit <b>Vorname <\/b>und <b>Nachname <\/b>w&uuml;rde mit Attributen so aussehen:<\/p>\n<pre>&lt;Kunde Vorname=\"Andre\" Nachname=\"Minhorst\"&gt;&lt;\/Kunde&gt;<\/pre>\n<p>Sie k&ouml;nnen <b>Vorname <\/b>und <b>Nachname <\/b>jedoch auch in untergeordneten Elementen darstellen:<\/p>\n<pre>&lt;Kunde&gt;\r\n   &lt;Vorname&gt;Andre&lt;\/Vorname&gt;\r\n   &lt;Nachname&gt;Minhorst&lt;\/Nachname&gt;\r\n&lt;\/Kunde&gt;<\/pre>\n<p>Wenn ein Element allerdings einen Text enthalten soll, k&ouml;nnen Sie diesem keine weiteren Unterelemente hinzuf&uuml;gen &#8211; dann m&uuml;ssen Sie zus&auml;tzliche Informationen als Attribut angeben:<\/p>\n<pre>&lt;Artikel Artikelnummer=\"123\"&gt;Access im Unternehmen&lt;\/Artikel&gt;<\/pre>\n<p><b>Kommentare<\/b><\/p>\n<p>Wenn Sie Kommentare zu einem XML-Dokument hinzuf&uuml;gen wollen, beginnen Sie diesen mit <b><!-- <\/b>und beenden ihn mit <b>--><\/b>, also genau wie unter HTML:<\/p>\n<pre>&lt;!--Dies ist ein Kommentar.--&gt;<\/pre>\n<p><b>Texte in Elementen<\/b><\/p>\n<p>Wenn ein Element oder ein Attribut eines Elements einen Text enth&auml;lt, k&ouml;nnen Sie daf&uuml;r alle m&ouml;glichen Zeichen verwenden &#8211; mit wenigen Ausnahmen, n&auml;mlich dem Gr&ouml;&szlig;er- und dem Kleiner-Zeichen, dem Und-Zeichen, dem Hochkomma und dem Anf&uuml;hrungszeichen. Diese m&uuml;ssen Sie durch bestimmte andere Zeichenkombinationen ersetzen:<\/p>\n<ul>\n<li>Und-Zeichen (<b>&#038;<\/b>): Ersetzen durch <b>&amp;<\/b><\/li>\n<li>Kleiner-Zeichen (<b><<\/b>): Ersetzen durch <b>&lt;<\/b><\/li>\n<li>Gr&ouml;&szlig;er-Zeichen (<b>><\/b>): Ersetzen durch <b>&gt;<\/b><\/li>\n<li>Hochkomma (<b>&#8216;<\/b>): Ersetzen durch <b>&apos;<\/b><\/li>\n<li>Anf&uuml;hrungszeichen (<b>&#8220;<\/b>): Ersetzen durch <b>&quot;<\/b><\/li>\n<\/ul>\n<p><b>Sonderzeichen trotzdem verwenden mit CData<\/b><\/p>\n<p>Wenn Sie Sonderzeichen wie die oben beschriebenen dennoch verwenden wollen, gibt es eine Alternative. Dazu verwenden Sie einen <b>CData<\/b>-Abschnitt als Inhalt eines Elements. Der <b>CData<\/b>-Abschnitt beginnt mit <b>&lt;![CDATA[ <\/b>und endet mit <b>]]&gt;<\/b>.<\/p>\n<p>Dazwischen k&ouml;nnen Sie Texte mit beliebigen Zeichen platzieren, also auch solche wie die oben genannten Sonderzeichen:<\/p>\n<pre>&lt;ElementMitSonderzeichen&gt;&lt;![CDATA[Die Sonderzeichen &lt;, &gt;, &, ', \" sind hier erlaubt.]]&gt;&lt;\/ElementMitSonderzeichen&gt;<\/pre>\n<p>Die einzige Ausnahme ist die Zeichenfolge <b>]]><\/b>, denn diese zeigt das Ende des <b>CData<\/b>-Abschnitts an. Der Rest des eigentlichen <b>CData<\/b>-Abschnitts w&uuml;rde dann als Fehler interpretiert werden. Die Verwendung von <b>CData<\/b>-Abschnitten eignet sich beispielsweise, um ein XML-Dokument innerhalb des Elements eines XML-Dokuments einzuf&uuml;gen.<\/p>\n<p><b>Namespaces f&uuml;r eindeutige Zuordnung verwenden<\/b><\/p>\n<p>Namespaces verwendet man, um Verwechslungen gleichnamiger Elemente zu verhindern. Wenn Sie beispielsweise in einem XML-Dokument sowohl Kunden als auch Lieferanten verwalten und beide enthalten Elemente namens Firma, dann k&ouml;nnte es beim Zugriff auf dieses Element zu Verwechslungen kommen. Es kann auch sein, dass Sie in Ihren eigenen XML-Dokumenten sehr genau darauf achten, dass alle Elemente eine eindeutige Bezeichnung haben. Vielleicht f&uuml;gt aber ein Nutzer Ihres XML-Dokuments dieses mit einem anderen XML-Dokument zusammen und erh&auml;lt dann doppelte Bezeichnungen f&uuml;r Elemente mit unterschiedlichen Bedeutungen. In folgendem Beispiel wird das deutlich:<\/p>\n<pre>&lt;xml version=\"1.0\" encoding=\"utf-8\"&gt;\r\n&lt;Bestellverwaltung&gt;\r\n   &lt;Kunden&gt;\r\n     &lt;Kunde&gt;\r\n       &lt;Firma&gt;Andr&eacute; Minhorst Verlag&lt;\/Firma&gt;\r\n     &lt;\/Kunde&gt;\r\n     ...\r\n   &lt;\/Kunden&gt;\r\n   &lt;Lieferanten&gt;\r\n     &lt;Lieferant&gt;\r\n       &lt;Firma&gt;Beispiellieferant GmbH&lt;\/Firma&gt;\r\n     &lt;\/Lieferant&gt;\r\n     ...\r\n   &lt;\/Lieferanten&gt;\r\n&lt;\/Bestellverwaltung&gt;<\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000232\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000232?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000232\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"b14c72894d\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>XML ist eines der bekanntesten Datenaustauschformate. XML bedeutet Extensible Markup Language und erlaubt das Speichern von Daten in Textdateien mit einem hierarchisch strukturierten Format. Dies wird zum Beispiel in den Konfigurationsdateien eines Visual Studio-Projekts genutzt &#8211; und auch XAML, die Sprache zum Definieren von WPF-Benutzeroberfl&auml;chen, ist auf XML aufgebaut. Wenn Daten zwischen zwei nicht kompatiblen Systemen ausgetauscht werden sollen, kommt oft XML zum Einsatz. Auch wenn Sie Daten von einem Webservice abrufen wollen, kommen die Daten in vielen F&auml;llen im XML-Format. Je nach Webservice k&ouml;nnen Sie diesem auch Daten im XML-Format schicken, die dann etwa durch Speichern in einer Datenbank weiterverarbeitet werden. Grund genug, sich XML einmal genauer anzusehen und zu schauen, welche M&ouml;glichkeiten .NET f&uuml;r das Lesen, Bearbeiten und Erstellen von XML-Dokumenten bietet.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662020,66042020,44000012,44000025],"tags":[],"yst_prominent_words":[],"class_list":["post-55000232","post","type-post","status-publish","format-standard","hentry","category-662020","category-66042020","category-Interaktiv","category-VBAProgrammierung"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000232"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000232\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000232"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}