2011-07-28 10 views
1

可能性の重複結果:LINQいいえ

<?xml version="1.0" encoding="utf-8" ?> 
<TestDataset xmlns="http://tempuri.org/TestDataset.xsd"> 
    <TaxRate> 
    <Code>GST</Code> 
    <Rate>0.05</Rate> 
    <LastModified>2010-03-31T17:03:24.063-04:00</LastModified> 
    <Deleted>0</Deleted> 
    <AbbreviationEN>GST</AbbreviationEN> 
    <AbbreviationFR>GST</AbbreviationFR> 
    <GLSubCode>GST</GLSubCode> 
    </TaxRate> 
    <TaxRate> 
    <Code>PST</Code> 
    <Rate>0.08</Rate> 
    <LastModified>2010-03-31T17:03:24.063-04:00</LastModified> 
    <Deleted>0</Deleted> 
    <AbbreviationEN>PST</AbbreviationEN> 
    <AbbreviationFR>PST</AbbreviationFR> 
    <GLSubCode>PST</GLSubCode> 
    </TaxRate> 
</TestDataset> 

そして、私がしようとしています:
Parse XML Elements with LINQ

を私はこのようなXML文書を持っています次のクエリで内容を選択します:

XDocument data = LoadTestData("TaxRate.xml"); 
var taxdata = (from x in data.Elements("TaxRate") 
       select new 
       { 
        Code = x.Element("Code").Value, 
        Rate = x.Element("Rate").Value, 
        AbbreviationEN = x.Element("AbbreviationEN").Value, 
        AbbreviationFR = x.Element("AbbreviationFR").Value, 
        GLSubCode = x.Element("GLSubCode").Value 
       }).ToList(); 

しかし、私は結果が得られず、LoadTestDataはXMLドキュメントをうまく読み込んでいます。

答えて

4

あなたが名前空間を含めるのを忘れ:

XNamespace ns = "http://tempuri.org/TestDataset.xsd"; 
XDocument data = LoadTestData("TaxRate.xml"); 
var taxdata = (from x in data.Descendants(ns + "TaxRate") 
       select new 
       { 
        Code = x.Element(ns + "Code").Value, 
        Rate = x.Element(ns + "Rate").Value, 
        AbbreviationEN = x.Element(ns + "AbbreviationEN").Value, 
        AbbreviationFR = x.Element(ns + "AbbreviationFR").Value, 
        GLSubCode = x.Element(ns + "GLSubCode").Value 
       }).ToList(); 

あなたのXMLファイル内の名前空間がデフォルトの名前空間ですが、あなたはまだそれを含める必要があなたの質問に。

3

あなたが名前空間を尊重する必要があります。

XNamespace ns = "http://tempuri.org/TestDataset.xsd"; 
var taxdata = (from x in data.Elements(ns+"TaxRate") 
      select new 
      { 
       Code = x.Element(ns+"Code").Value, 
       Rate = x.Element(ns+"Rate").Value, 
       AbbreviationEN = x.Element(ns+"AbbreviationEN").Value, 
       AbbreviationFR = x.Element(ns+"AbbreviationFR").Value, 
       GLSubCode = x.Element(ns+"GLSubCode").Value 
      }).ToList(); 
関連する問題