0

今月から C# の学習を開始し、XML ファイルを解析してデータを取得するプログラムを作成しています。.xml ファイルは次のとおりです。

<Info>
<Symbols>
<Symbol>
    <Name>Name</Name>
    <Type>INT</Type>
</Symbol>
<Symbol>
    <Name>Name</Name>
    <Type>INT</Type>
    <Properties>
        <Property>
            <Name>TAG</Name>
        </Property>
    </Properties>
</Symbol>
</Symbols>
</Info>

以下の私のコードは、要素「名前」と「タイプ」、「シンボル」から値を取得します。ただし、各「シンボル」に要素「プロパティ」が存在するかどうかを確認する必要があります。これは、ご覧のとおり、「プロパティ」要素のないもの (最初の「シンボル」など) があるためです。存在する場合は、から値を取得します。この場合は「TAG」です。foreach が存在する場合にのみそれを取得しようとする簡単な方法はありますか?!

var symbols = from symbol in RepDoc.Element("Info").Element("Symbols").Descendants("Symbol")          

select new
{
VarName = symbol.Element("Name").Value,
VarType = symbol.Element("Type").Value,
};

foreach (var symbol in symbols) 
{
Console.WriteLine("" symbol.VarName + "\t" + symbol.VarType);
}

よろしくお願いします^^

4

1 に答える 1

0
var res = XDocument.Load(fname)
            .Descendants("Symbol")
            .Select(x => new
            {
                Name = (string)x.Element("Name"),
                Type = (string)x.Element("Type"),
                Props = x.Descendants("Property")
                       .Select(p => (string)p.Element("Name"))
                       .ToList()
            })
            .ToList();

PropsPropertiesタグに応じて、0 個以上の要素が含まれます。

于 2013-08-29T20:02:46.030 に答える