2016-07-28 8 views
0

Ich möchte eine XML „Datenbank“ erstellen, die zur Zeit wie folgt aussieht:Können Sie XML-Arrays vereinfachen?

<?xml version="1.0"?> 
<ArrayOfSport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <sport name="football"> 
    <countries> 
     <country name="england"> 
     <leagues> 
      <league name="premierleague"> 
      <teams> 
       <team key="man" value="Manchester United" /> 
       <team key="arse" value="Arsenal" /> 
       <team key="bour" value="Bournemouth" /> 
      </teams> 
      </league> 
     </leagues> 
     </country> 
    </countries> 
    </sport> 
</ArrayOfSport> 

Wie Sie sehen können, diese XML kann sehr chaotisch sein. Also, meine Frage ist, können Sie XML-Arrays vereinfachen (<countries>, <leagues>, <teams>) wie im Beispiel oben in etwa so aus ?:

<?xml version="1.0"?> 
<ArrayOfSport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <sport name="football"> 
    <country name="england"> 
     <league name="premierleague"> 
     <team key="man" value="Manchester United" /> 
     <team key="arse" value="Arsenal" /> 
     <team key="bour" value="Bournemouth" /> 
     </league> 
    </country> 
    </sport> 
</ArrayOfSport> 

Oder bin ich etwas fehlt?

Antwort

0

Es wurde behoben mit XDocument.

Hier ist der C# -Code, der die gültige XML generiert:

<sports> 
    <sport name="football"> 
    <country name="england"> 
     <league name="premierleague"> 
     <team key="man" value="Manchester United" /> 
     <team key="arse" value="Arsenal" /> 
     <team key="bour" value="Bournemouth" /> 
     </league> 
    </country> 
    </sport> 
</sports> 
:

var sports = 
    new XElement("sports", 
     new XElement("sport", new XAttribute("name", "football"), 
      new XElement("country", new XAttribute("name", "england"), 
       new XElement("league", new XAttribute("name", "premierleague"), 
        new XElement("team", new XAttribute("key", "man"), new XAttribute("value", "Manchester United")), 
        new XElement("team", new XAttribute("key", "arse"), new XAttribute("value", "Arsenal")), 
        new XElement("team", new XAttribute("key", "bour"), new XAttribute("value", "Bournemouth")) 
       ) 
      ) 
     ) 
    ); 

using (var fileStream = new FileStream(@"C:\XElementTest.xml", FileMode.Create)) 
using (var writer = new StreamWriter(fileStream)) 
{ 
    writer.Write(sports); 
} 

Es dieses XML erzeugt