Entwickler-Ecke

IO, XML und Registry - XML-Datei einlesen


dark-destination1988 - Mo 19.03.12 17:02
Titel: XML-Datei einlesen
Hallo ihrs,

ich habe folgendes Problem.
Ich will eine XML-Datei über deserialisierung auslesen.
Dazu wollte ich diese XML-Form als Klasse nachbauen um sie schließlich zu deserialiseren.
Die XML-Datei (beispielhaft) hat folgendes Format:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<Message DtdVersion="2" DtdRelease="3">
    <MessageIdentification v="..."/>
    <MessageVersion v="Test"/>
    <MessageType v="TestTyp"/>
    <ProcessType v="Testprozess"/>
    <ScheduleClassificationType v="Test"/>
    <SenderIdentification v="Test" codingScheme=".."/>
    <SenderRole v="Testsender"/>
    <ReceiverIdentification v="Test" codingScheme=".."/>
    <ReceiverRole v="Testreceiver"/>
    <MessageDateTime v="2012-02-23T10:09:17Z"/>
    <ScheduleTimeInterval v="2012-03-17T23:00Z/2012-03-18T23:00Z"/>
    <ScheduleTimeSeries>
        <SendersTimeSeriesIdentification v="Testserie"/>
        <SendersTimeSeriesVersion v="1"/>
        <BusinessType v=".."/>
        <Product v="Testprodukt"/>
        <ObjectAggregation v=".."/>
        <InArea v="Test" codingScheme=".."/>
        <OutArea v="Test" codingScheme=".."/>
        <InParty v="Test" codingScheme=".."/>
        <OutParty v="Test" codingScheme=".."/>
        <MeasurementUnit v="TESTUNIT"/>
        <Period>
            <TimeInterval v="2012-03-17T23:00Z/2012-03-18T23:00Z"/>
            <Resolution v=".."/>
            <Interval>
                <Pos v="1"/>
                <Qty v="12/>
            </Interval>
            <Interval>
                <Pos v="
2"/>
                <Qty v="
12"/>
            </Interval>
        </Period>
    </ScheduleTimeSeries> 
    <ScheduleTimeSeries>
...

Ist das Format reproduzierbar? Ich scheitere daran, das ich ScheduleTimeSeries nicht mehrfach aufreihen kann (bei der Serialisierung) das heißt ich kann nur ein XML-Attribut mit diesem Namen vergeben.
Das es aber mehrere Series geben soll weiß ich nicht wie ich das Klassentechnisch nachbilden kann.

Kann mir da jemand helfen? Oder gibt es ein Tool was aus XML-Dateien C# Klassen bauen kann`?
Danke für eure Hilfe!


Ralf Jansen - Mo 19.03.12 17:22

Zum Framework gehört die xsd.exe. Mit der kannst du für dein XML ein XSD Schema erzeugen und daraus wiederum Klassen. Ob das dann genau passt ist aber fraglich. Insbesondere am XML -> XSD Teil ist ja eine gehörige Portion raten beteiligt. Da mußt du im Zweifel zumindestens nochmal Hand ans erzeugte Schema anlegen.