Gern stehe ich zur fachlichen Unterstützung in XML-Technologien, C#.NET, VisualBasic.NET und Java zur Verfügung. Sprechen Sie mich einfach an: Mail oder ☎ 0151 . 750 360 61


XPath 3.0, XPath 2.0, XPath 1.0 / XML auswerten mit XPath, C#.NET und Java / Auswertung mit C#.NET via System.Xml.XmlReader

Auswertung mit C#.NET via System.Xml.XmlReader

Auswertung mit C#.NET via System.Xml.XmlReader

➪ Diese Seite beschreibt anhand eines einfachen Beispiels verschiedene Möglichkeiten zur Auswertung von XML-Dokumenten in XPath/XSLT, C#.NET und Java.

Sie bevorzugen eine rein sequenzielle Auswertung des XML-Dokuments? Das geht auch: Hier wird aber deutlich, dass XML-Dokumente nicht ebenso mühelos auswertbar sind wie vergleichsweise -Dateien oder Flatfiles.

Mit System.Xml.XmlReader lesen Sie das XML-Dokument sequenziell: Hier brauchen Sie (wunschgemäß) eine Reihe von Variablen, um zu prüfen, dass der XmlReader auch die gesuchten Elemente bzw. Wertinhalte liest. Ich bin nicht restlos überzeugt, dass dieser Ansatz die Wartbarkeit des Codes nachhaltig vereinfacht. Käme zusätzlich die Anforderung hinzu, die Ergebnisse zu sortieren (in XSLT problemlos via realisierbar), wäre der Aufwand hier nochmals höher.


System.Xml.XmlReader r = System.Xml.XmlReader.Create(@"(inputdokument)");
string ganzername      = "";
string aktenzeichen    = "";
bool iscorrect         = false;
bool isremark          = false;
bool isaz              = false;
int position           = 0;
using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(
      Console.Out, 
      new System.Xml.XmlWriterSettings() { Indent = true }))
{
xw.WriteStartDocument();
xw.WriteStartElement("ergebnis");
while (r.Read())
{
  if(r.IsStartElement() && r.Name== "Name")
  {
    iscorrect  = true;
    isaz       = true;
    ganzername = r.GetAttribute("name");
  }
  if (r.IsStartElement() && r.Name == "Bemerkung")
  {
    isremark = true;
  }
  if (isremark && r.Value == "LQ")
  {
    iscorrect = false;
  }
  if (r.IsStartElement() && r.Name == "Aktenzeichen")
  {
    isaz = true;
  }
  if(isaz && r.Value!="") aktenzeichen = r.Value;
  if (!r.IsStartElement() && r.Name == "Aktenzeichen")
  {
    isaz = false;
  }
  else if (!(r.IsStartElement()) && r.Name == "Name")
  {
    isremark = false;
    isaz = false;
  }
  if(iscorrect && !(r.IsStartElement()) && r.Name == "Name")
  {
    position++;
    xw.WriteStartElement("Mensch");
    xw.WriteAttributeString("name", ganzername);
    xw.WriteAttributeString("az", aktenzeichen);
    xw.WriteAttributeString("nr",position.ToString());
    xw.WriteEndElement();
  }
}
r.Close();
xw.WriteEndElement();
xw.WriteEndDocument();

wg / 26. Januar 2019



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/xpath_cs_java_Auswertung5.html