Forum: PC-Programmierung xml Childknoten zusammenfassen c#


von Mark (Gast)


Lesenswert?

Hallo,
ich programmiere mir gerade ein Adressbuch.
Dazu habe ich zunächst alle meine Konatkte als VCard erstellt und in 
eine XML geschrieben. Das hat auch soweit ganz gut geklappt. Beim 
nächsten Schritt stehe ich allerdings auf dem schlauch.
Ein Kontakt ist wie folgt aufgebaut
1
    <Kontakt>
2
      <Name Name="xxx,xxx" />
3
      <Telefon zu Hause="+01234567" />
4
      <Telefon Mobil="+1234567" />
5
      <Telefon Arbeit="+765432" />
6
      <Adresse Straße="asdf" Ort="asdf" PLZ="12345" />
7
      <Geburtstag Geburtstag="1980-07-09" />
8
    </Kontakt>

Wie man sehen kann, ist für jedes Telefon ein eigener Knoten. Ist es 
möglich, diese in einem Knoten zusammenzufassen? Also das da hinterher 
steht

<Telefon zu Hause="+01234567" Mobil="+1234567" Arbeit="+765432" />


Mark

von Mark (Gast)


Lesenswert?

Ahso,
ich erstelle die xml wie folgt.
ich gehe die originaldatei durch und überprüfe jeweils, was am Anfang 
der ZEile steht
1
while ((line = vCard.ReadLine()) != 
2
{
3
...
4
}

Im bereich der TElefonnummern sieht es dann wie folgt aus


1
                if (line.Split(';')[0] == "TEL")
2
                {
3
                    myXmlTextWriter.WriteStartElement("Telefon");
4
                    if (line.Contains("TYPE=HOME"))
5
                    {
6
                        myXmlTextWriter.WriteAttributeString("zu Hause", line.Split(':')[1]);
7
                    }
8
                    if (line.Contains("TYPE=WORK"))
9
                    {
10
                        myXmlTextWriter.WriteAttributeString("Arbeit", line.Split(':')[1]);
11
                    }
12
                    if (line.Contains("TYPE=CELL"))
13
                    {
14
                        myXmlTextWriter.WriteAttributeString("Mobil", line.Split(':')[1]);
15
                    }
16
                    if (line.Contains("TYPE=Whatsapp"))
17
                    {
18
                        myXmlTextWriter.WriteAttributeString("Whatsapp", line.Split(':')[1]);
19
                    }
20
                    if (line.Contains("TYPE=China"))
21
                    {
22
                        myXmlTextWriter.WriteAttributeString("China", line.Split(':')[1]);
23
                    }
24
                    myXmlTextWriter.WriteEndElement(); // Telefon
25
                }

von Tuxi (Gast)


Lesenswert?

Und was, wenn jemand zwei Mobiltelefone/Nummern hat?

von guest (Gast)


Lesenswert?

Das hier:
1
myXmlTextWriter.WriteAttributeString("zu Hause", line.Split(':')[1]);
sollte Dir eigentlich der XmlTextWriter um die Ohren hauen. Das ergibt 
ein ungültiges XML-Dokument! (Hint: Leerzeichem im Attributnamen)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.