Hallo,
ich habe folgendes vor:
Ich bekomme eine fertige XML deren Form ich nicht beeinflussen kann. Gewissen Elemente dieser XML möchte ich letztendlich in eine Access- DB übernehmen.
Da ich allerdings nur gewisse Teile übernehmen möchte muß ich den Inhalt also Filtern. Ich habe mittlerweile schon LINQ to XML und deserialisieren getestet
und sogar hinbekommen. Deserialisieren ist viel schneller als LINQ, aber noch nicht schnell genug, da ich den Stream nach dem Einlesen noch Filtern muß
(habe keinen Weg gefunden die Daten ohne den Stream in ein Dataset zu bekommen, vermutlich weil es keinen Weg ohne den Stream gibt).
Meine letzte Möglichkeit wäre Dataset.ReadXML. Dazu fehlt mir aber jedes Wissen über die XSD, ohne die ich die Daten nicht bekomme. Natürlich kann ich die
XSD über VB erstellen lassen, was auch geht, aber dann muß ich die Daten letztendlich doch wieder Filtern, was ich eigendlich vermeiden wollte.
Daher die Frage: Wie kann ich eine XSD erstellen in der die Daten schon entsprechend gefiltert sind (geht das überhaupt)?
Hier ein Auszug der XML:
Wenn ich jetzt die XSD erstellen lasse, so werden Tabellen für jedes Element angelegt, was nicht ganz in meinem Sinne ist.
Der Wunsch wäre das für jede unterschiedliche Kategorie (category, davon gibt es nur 8) erstellt wird, mit dem PrimKey "Id"
und alles bis zum nächsten Element als eine neue Spalte in die Tabelle eingefügt wird (Inklusive dem Attribute "Type" des Elements).
falls das so möglich ist, wäre ich um einen Denkanstoss dankbar, aus dem ich ableiten kann wie ich vorgehen muß.
ich habe folgendes vor:
Ich bekomme eine fertige XML deren Form ich nicht beeinflussen kann. Gewissen Elemente dieser XML möchte ich letztendlich in eine Access- DB übernehmen.
Da ich allerdings nur gewisse Teile übernehmen möchte muß ich den Inhalt also Filtern. Ich habe mittlerweile schon LINQ to XML und deserialisieren getestet
und sogar hinbekommen. Deserialisieren ist viel schneller als LINQ, aber noch nicht schnell genug, da ich den Stream nach dem Einlesen noch Filtern muß
(habe keinen Weg gefunden die Daten ohne den Stream in ein Dataset zu bekommen, vermutlich weil es keinen Weg ohne den Stream gibt).
Meine letzte Möglichkeit wäre Dataset.ReadXML. Dazu fehlt mir aber jedes Wissen über die XSD, ohne die ich die Daten nicht bekomme. Natürlich kann ich die
XSD über VB erstellen lassen, was auch geht, aber dann muß ich die Daten letztendlich doch wieder Filtern, was ich eigendlich vermeiden wollte.
Daher die Frage: Wie kann ich eine XSD erstellen in der die Daten schon entsprechend gefiltert sind (geht das überhaupt)?
Hier ein Auszug der XML:
XML-Quellcode
- - <ELEMENT category="XXX" type="YYY" id="ZZZ">
- - <ATTRIBUTES>
- <PROPERTY name="AAA" value="aaa" />
- <PROPERTY name="BBB" value="bbb" />
- </ATTRIBUTES>
- - <PERIPHERAL parentId="CCC">
- - <PHYSICALADDRESS>
- <PROPERTY name="d" value="ddd" />
- </PHYSICALADDRESS>
- <PROPERTY name="FFF" value="fff" />
- </PERIPHERAL>
- - <FUNCTIONAL parentId="GGG">
- - <LOGICALADDRESS>
- <PROPERTY name="HHH" value="hhh" />
- <PROPERTY name="JJJ" value="jjj" />
- <PROPERTY name="KKK" value="kkk" />
- </LOGICALADDRESS>
- <PROPERTY name="LLL" value="lll" />
- <PROPERTY name="MMM" value="mmm" />
- <PROPERTY name="NNN" value="nnn" />
- </FUNCTIONAL>
- </ELEMENT>
- - <ELEMENT category="VVV" type="UUU" id="III">
- - <ATTRIBUTES>
- <PROPERTY name="AAA" value="aaa" />
- </ATTRIBUTES>
- - <FUNCTIONAL parentId="TTT">
- - <LOGICALADDRESS>
- <PROPERTY name="HHH" value="RRR" />
- <PROPERTY name="SSS" value="ssss" />
- <PROPERTY name="EEE" value="eee" />
- <PROPERTY name="QQQ" value="qqq" />
- <PROPERTY name="WWW" value="www" />
- </LOGICALADDRESS>
- <PROPERTY name="LLL" value="lll" />
- <PROPERTY name="MMM" value="mkm" />
- <PROPERTY name="NNN" value="nnn" />
- </FUNCTIONAL>
- </ELEMENT>
Wenn ich jetzt die XSD erstellen lasse, so werden Tabellen für jedes Element angelegt, was nicht ganz in meinem Sinne ist.
Der Wunsch wäre das für jede unterschiedliche Kategorie (category, davon gibt es nur 8) erstellt wird, mit dem PrimKey "Id"
und alles bis zum nächsten Element als eine neue Spalte in die Tabelle eingefügt wird (Inklusive dem Attribute "Type" des Elements).
falls das so möglich ist, wäre ich um einen Denkanstoss dankbar, aus dem ich ableiten kann wie ich vorgehen muß.