2012-03-19 49 views
1
<?xml version="1.0" encoding="utf-8" ?> 
<SiteMap> 
    <Site FacID="Default"> 
     <Rec0> 
      <NumGeos> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>4</YMax> 
       <RMax>5</RMax> 
      </NumGeos> 
      <GeoAvg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </GeoAvg> 
      <L1AGC> 
       <RMin>2500</RMin> 
       <YMin>2600</YMin> 
       <YMax>3400</YMax> 
       <RMax>3500</RMax> 
      </L1AGC> 
      <NumL1s> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>14</YMax> 
       <RMax>15</RMax> 
      </NumL1s> 
      <L1Avg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </L1Avg> 
      <L2AGC> 
       <RMin>2500</RMin> 
       <YMin>2600</YMin> 
       <YMax>3400</YMax> 
       <RMax>3500</RMax> 
      </L2AGC> 
      <NumL2s> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>14</YMax> 
       <RMax>15</RMax> 
      </NumL2s> 
      <L2Avg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </L2Avg> 
     </Rec0> 
    </Site> 
    <Site FacID="BET"> 
     <Rec1> 
      <NumGeos> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>4</YMax> 
       <RMax>5</RMax> 
      </NumGeos> 
      <GeoAvg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </GeoAvg> 
      <L1AGC> 
       <RMin>2500</RMin> 
       <YMin>2600</YMin> 
       <YMax>3400</YMax> 
       <RMax>3500</RMax> 
      </L1AGC> 
      <NumL1s> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>14</YMax> 
       <RMax>15</RMax> 
      </NumL1s> 
      <L1Avg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </L1Avg> 
      <L2AGC> 
       <RMin>2500</RMin> 
       <YMin>2600</YMin> 
       <YMax>3400</YMax> 
       <RMax>3500</RMax> 
      </L2AGC> 
      <NumL2s> 
       <RMin>0</RMin> 
       <YMin>1</YMin> 
       <YMax>14</YMax> 
       <RMax>15</RMax> 
      </NumL2s> 
      <L2Avg> 
       <RMin>10</RMin> 
       <YMin>20</YMin> 
       <YMax>60</YMax> 
       <RMax>70</RMax> 
      </L2Avg> 
     </Rec1> 
    </Site> 
</SiteMap> 

我想在XML文件中列出的值存储上面,这样我可以指给他们这样的:如何将此Linq写入XML Query以将值存储在内存中?

int x = (Site["BET"].Rec1.GeoAvg.RMin == null 
     ? Site["Default"].Rec0.GeoAvg.RMin 
     : Site["BET"].Rec1.GeoAvg.RMin) 

或至少相似的东西。任何人都知道一个简单(快速)的方法来做到这一点?非常感谢你的帮助!!!

+2

你有没有尝试反序列化的对象在http://stackoverflow.com/questions/226599/deserializing-xml-to-objects-in-c-sharp?这是我在这种情况下要做的 – Bob2Chiv 2012-03-19 13:48:32

回答

1

好了,而不是试图使用LINQ做到这一点,我用这个:

Generate C# class from XML

然后我使用点符号引用新类中的元素。

1

主要部分将是一个ToDicionary(),像

var sites = doc.Descendants("Site").ToDictionary(
     e => e.Attribute("FacID").Value, 
     e => new Site { Rec1 = new Rec1 { ... } }); 
相关问题