2016-07-28 66 views
0

我想創建一個XML「數據庫」,目前看起來是這樣的:您可以簡化XML數組嗎?

<?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> 

正如你可以看到,這個XML可以很凌亂。所以,我的問題是,您可以簡化XML陣列(<countries><leagues><teams>)就像上面的例子弄成這個樣子?:

<?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> 

還是我失去了一些東西?

回答

0

通過使用XDocument來修復它。

下面是產生有效的XML的C#代碼:

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); 
} 

它生成此XML:

<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> 
相關問題