2016-06-01 8 views
-1

ASP.netプログラムのルートにある以前に作成されたファイルでLINQを使用してXMLファイル(XMLfile.xml)を読み取るにはどうすればよいですか。各要素は既に作成したXMLファイルに存在します(下の抜粋を参照)。LINQを使用してXMLファイルを読み取る

 XDocument xmlElements = XDocument.Parse(System.IO.File.ReadAllText(Server.MapPath("XMLfile.xml"))); 

     var elements = from data in xmlElements.Descendants("/NewDataSet/Table") 
      select new 
      { 
       Number0 = (int)data.Element("Number"), 
       Name0 = (string)data.Element("Name"), 
       a0 = (double)data.Element("a"), 
       e0 = (double)data.Element("e"), 
       i0 = (double)data.Element("i"), 
       N0 = (double)data.Element("N"), 
       w0 = (double)data.Element("w"), 
       Pyrs0 = (double)data.Element("Pyrs"), 
       mm0 = (double)data.Element("mm"), 
       MA0 = (double)data.Element("MA0") 
      }; 

     foreach (var element in elements) 
     { 
      m = m + 1; 
      num[m] = element.Number0; 
      nam[m] = element.Name0; 
      a1[m] = element.a0; 
      ecc[m] = element.e0; 
      i[m] = element.i0; 
      N[m] = element.N0; 
      w[m] = element.w0; 
      Pyrs[m] = element.Pyrs0; 
      mm[m] = element.mm0; 
      MA0[m] = element.MA0; 
     } 

私のために働いた何XMLfile.xml

<?xml version="1.0" standalone="yes"?> 
<NewDataSet> 
    <Table> 
     <Number>1</Number> 
     <Name>Ceres</Name> 
     <a>2.7681117</a> 
     <e>0.0757544</e> 
     <i>10.59166</I> 
     <N>80.3218024</N> 
     <w>72.73324</w> 
     <Pyrs>4.61</Pyrs> 
     <mm>0.2140072</mm> 
     <MA0>181.38143</MA0> 
    </Table> 
    <Table> 
     <Number>2</Number> 
     <Name>Pallas</Name> 
     <a>2.7723622</a> 
     <e>0.2310236</e> 
     <i>34.84095</i> 
     <N>173.0882785</N> 
     <w>309.98943</w> 
     <Pyrs>4.62</Pyrs> 
     <mm>0.2135153</mm> 
     <MA0>163.60434</MA0> 
    </Table> 
    ... 
    </NewDataSet> 
+1

あなたの問題を説明してください。あなたのコードを貼り付けただけですが、何か問題がある場合は明記していません。 – Gusman

+1

XDocument xDoc = XDocument.Load(Server.MapPath( "XMLFile.xml")); – Hakunamatata

+0

System.Xml.dllで 'System.Xml.XmlException'型の例外が発生しましたが、ユーザーコードで処理されませんでした。 追加情報:名前は '/'文字、16進値0x2Fで始めることはできません。 – losopha

答えて

0

は、拡張メソッドXPathSelectElementsです。次のように:

var elements = from data in xmlElements.XPathSelectElements("/NewDataSet/Table") 
    select new 
    { 
     Number0 = (int)data.Element("Number"), 
     Name0 = (string)data.Element("Name"), 
     a0 = (double)data.Element("a"), 
     e0 = (double)data.Element("e"), 
     i0 = (double)data.Element("i"), 
     N0 = (double)data.Element("N"), 
     w0 = (double)data.Element("w"), 
     Pyrs0 = (double)data.Element("Pyrs"), 
     mm0 = (double)data.Element("mm"), 
     MA0 = (double)data.Element("MA0") 
    }; 
0

以下のコードは、あなたのリクエストのようなXML Linqです。 XMLでは大文字と小文字が区別されるため、終了タグ "I"を "i"に変更する必要があります。私は下のコードをテストし、それが動作します。ファイルの代わりに文字列がある場合は、「読み込み」を「解析」に変更します。

関連する問題