1

私が取り組んでいるプロジェクトの一環として、XML ファイルにクエリを実行し、検索基準に基づいてデータを検索する必要があります。私は使用していくつかの例を試しXDocumentましたが、私の問題は、解析が必要な XML ファイルに約 7 つのバリエーションがあることです。そのため、ファイルに含まれる可能性のある属性だけで、要素名はわかりません。バリエーションごとに、ファイルを 1 つのファイルに連結しました。これにより、検索が容易になるというのが私の理論でした。これまでのところ、その理論は間違っていることが証明されています。

All には、属性のリストの一部またはすべてが含まれます。例えば

<root>
    <T1>
        <T11 name="123"/>
        <H05 FileType="T52" ClientID="POB" />
    </T1>
    <T1>
        <T11 name="1234"/>
        <H05 FileType="T2" ClientID="POB" />
        <E1 ErrorCode="AA00" ErrorText="There was an Error" />
        <E1 ErrorCode="BB00" ErrorText="There was another Error" />
    </T1>
</root>

名前を検索するエラーのコレクションが必要な場合、ファイル内で見つかった属性名のみを使用して LINQ で検索することは可能ですか?

4

2 に答える 2

1

ErrorCode属性を含むドキュメント内のすべてのノードを検索するとします。

XDocument document = LoadXml();
IEnumerable<XElement> errorNodes = document
   // Find all descendant nodes:
   .Descendants() 
    // With an "ErrorCode" attribute:
   .Where(el => el.Attribute("ErrorCode") != null);
于 2013-04-05T15:18:50.720 に答える
0

このようなことができるはずです。

        var xmlString = @"<root>
        <T1>
        <T11 name=""123\""/>
        <H05 FileType=""T52"" ClientID=""POB"" />
        </T1>
        <T1>
        <T11 name=""1234""/>
        <H05 FileType=""T2"" ClientID=""POB"" />
        <E1 ErrorCode=""AA00"" ErrorText=""There was an Error"" />
        <E1 ErrorCode=""BB00"" ErrorText=""There was another Error"" />
        </T1>
        </root>";

        var xml = XDocument.Parse(xmlString);

        var names = from x in xml.Descendants().Attributes("name") select x.Parent;
于 2013-04-05T15:23:06.257 に答える