0

コードを確認し、期待される出力を得るためにどのような変更を行う必要があるかをアドバイスしてください。選択コードは疑似です。

xml:

<?xml version='1.0'  encoding='Cp1252' ?>
<RESULTS>
    <ROW>
        <COLUMN NAME="ID"><![CDATA[1234]]></COLUMN>
        <COLUMN NAME="FName"><![CDATA[Joe]]></COLUMN>
        <COLUMN NAME="LName"><![CDATA[Doe]]></COLUMN>
    </ROW>
    <ROW>
        <COLUMN NAME="ID"><![CDATA[5678]]></COLUMN>
        <COLUMN NAME="FName"><![CDATA[Jill]]></COLUMN>
        <COLUMN NAME="LName"><![CDATA[Martin]]></COLUMN>
    </ROW>
</RESULTS>

コード:

static void Main(string[] args)
{    
    XDocument doc = XDocument.Load("C:\\test.xml");
    var query = from headrow in doc.Descendants("ROW")
                from COLUMN in headrow.Descendants("COLUMN")
                select new 
                { 
                    ID = COLUMN.Element where (string)COLUMN.Attribute== "ID",
                    FName = COLUMN.Element where (string)COLUMN.Attribute== "FName",
                    LName = COLUMN.Element where (string)COLUMN.Attribute== "LName"
                };


    foreach (var result in query)
    {    
        Console.WriteLine(result);               
    }    
}

予想される出力
1234 Joe Doe
5678 Jill Martin

前もって感謝します

4

1 に答える 1

1

以下が役立つかどうかを確認してください。

var query = from headrow in doc.Descendants("ROW") 
            select new 
            {
                ID = headrow.Elements("COLUMN").First(c => c.Attribute("NAME").Value == "ID").Value,
                FName = headrow.Elements("COLUMN").First (c => c.Attribute("NAME").Value == "FName").Value,
                LName = headrow.Elements("COLUMN").First (c => c.Attribute("NAME").Value == "LName").Value
            };

foreach (var result in query) 
{     
    Console.WriteLine("{0} {1} {2}", result.ID, result.FName, result.LName);                
}     
于 2012-06-21T19:21:34.153 に答える