2016-07-28 32 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>