Laden...

xml verarbeiten mit doppelten Knotennamen, die nur xsi:type Unterschiede haben

Erstellt von alexpj vor 3 Jahren Letzter Beitrag vor 3 Jahren 351 Views
A
alexpj Themenstarter:in
14 Beiträge seit 2015
vor 3 Jahren
xml verarbeiten mit doppelten Knotennamen, die nur xsi:type Unterschiede haben

hallo!

aufgrund meinder bescheidenen Hobbyprogrammierkenntnisse verzweifel ich an dem Verarbeiten einer einer (Eport) XML Datei aus einem Aufmaßprogramm.
Es gibt darin ein Konten

<Children>
    <ProjectChild xsi:type="Group">

der wiederum identisch benannte Childs hat

 <children>
        <ProjectChild xsi:type="Position">

Versuche ich das ganz normal in ein DataSet einzulesen gibt es aufgrund der doppelten Namen eine Fehlermeldung.

Frage 1:
Wie kann ich die xsi:type="..." berücksichtigen?
Frage 2:
Bei einem automatisierten Umbenennen ist es im am identischen </ProjectChild> gescheitert.
Gäbe es eine Möglichkeit die Knoten umzubennen?

Das Ziel der Maßnahme soll ein zeilenweises Einlesen in ein einzelnes DatagridView sein...

Danke & Gruss,
Alex

hier als ganzes:

<Project xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Children>
    <ProjectChild xsi:type="Group">
      <Number>1</Number>
      <Name>Farbige Wände</Name>
      <children>
        <ProjectChild xsi:type="Position">
          <Number>1</Number>
          <Name>violettblau RAL 5000 RH=300cm</Name>
          <CalculationItems>
            <CalculationItem xsi:type="PointCalculationItem">
              <Name>Wand RAL5000</Name>
              <Comment />
              <Count>1</Count>
              <Area>63.7981846861768</Area>
              <AreaFormula>plo * h = (4,94+1+4,94+9,07+0,11) * 3,18</AreaFormula>
              <Length>20.0623222283575</Length>
              <LengthFormula>plo = (4,94+1+4,94+9,07+0,11)</LengthFormula>
              <Volume>0</Volume>
              <VolumeFormula>plo * h * w = (4,94+1+4,94+9,07+0,11) * 3,18 * 0</VolumeFormula>
              <Sign>1</Sign>
            </CalculationItem>
            <CalculationItem xsi:type="PointCalculationItem">
              <Name>Wand RAL5000</Name>
              <Comment />
              <Count>1</Count>
              <Area>63.7981846861768</Area>
              <AreaFormula>plo * h = (4,94+1+4,94+9,07+0,11) * 3,18</AreaFormula>
              <Length>20.0623222283575</Length>
              <LengthFormula>plo = (4,94+1+4,94+9,07+0,11)</LengthFormula>
              <Volume>0</Volume>
              <VolumeFormula>plo * h * w = (4,94+1+4,94+9,07+0,11) * 3,18 * 0</VolumeFormula>
              <Sign>1</Sign>
            </CalculationItem>
          </CalculationItem>

Gruppe als auch Position gibt es ggf. mehrfach

T
2.219 Beiträge seit 2008
vor 3 Jahren

Anstelle eines DataSet würde ich mir eine eigene Datenstruktur anlegen.
Die Xml Datei kannst du dann entweder über XDocument mit XPath auslesen oder alternativ auch mit dem XmlTextReader die Xml selbst parsen.
Auch wäre zu prüfen ob die nicht einfach die Xml Datei par Deserialisierung mit entsprechenden Einstellungen einlesen kannst, was der einfachste Weg sein dürfte.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.