1

作为我正在处理的项目的一部分,我需要查询 XML 文件并根据搜索条件查找数据。我已经尝试了一些示例,XDocument但我的问题是需要解析的 XML 文件大约有 7 个变体。所以我不知道元素名称,也不知道文件可能包含哪些属性。对于每个变体,我将文件连接到一个文件中,这是我的理论,它会使搜索更容易。迄今为止,该理论已被证明是错误的。

所有将具有部分或全部属性列表。例如

<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 回答