如何在通配符中搜索xml“属性名称”?

时间:2016-06-29 15:37:20

标签: vb.net xml-parsing

我是vb.net中xml解析器的新手,需要xml和vb.net专家的帮助:))

我需要找到给定值的属性名称,但属性以所需文本开头。

我的xml字符串是这样的

<Level1>
    <Level2>
        <Level3 Group="FirstGroup1" Value="FALSE"/>
        <Level3 Group="**FirstGroup2**" Value="TRUE"/>
        <Level3 Group="FirstGroup3" Value="FALSE"/>
        <Level3 Group="FirstGroup4" Value="FALSE"/>
        <Level3 Group="FirstGroup5" Value="FALSE"/>
        <Level3 Group="SecondGroup1" Value="FALSE"/>
        <Level3 Group="SecondGroup2" Value="FALSE"/>
        <Level3 Group="SecondGroup3" Value="FALSE"/>
        <Level3 Group="SecondGroup4" Value="TRUE"/>
        <Level3 Group="SecondGroup5" Value="FALSE"/>
        <Level3 Group="SecondGroup6" Value="FALSE"/>
    </Level2>
</Level1>

我想要来自FirstGroup *的属性名称,其值为True。在这种情况下,我期待FirstGroup2。

我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

由于您没有提供任何代码,因此我不知道您要使用什么API来解析XML,而是使用LINQ to XMLXML literals

Dim xml =
<Level1>
    <Level2>
        <Level3 Group="FirstGroup1" Value="FALSE"/>
        <Level3 Group="FirstGroup2" Value="TRUE"/>
        <Level3 Group="FirstGroup3" Value="FALSE"/>
        <Level3 Group="FirstGroup4" Value="FALSE"/>
        <Level3 Group="FirstGroup5" Value="FALSE"/>
        <Level3 Group="SecondGroup1" Value="FALSE"/>
        <Level3 Group="SecondGroup2" Value="FALSE"/>
        <Level3 Group="SecondGroup3" Value="FALSE"/>
        <Level3 Group="SecondGroup4" Value="TRUE"/>
        <Level3 Group="SecondGroup5" Value="FALSE"/>
        <Level3 Group="SecondGroup6" Value="FALSE"/>
    </Level2>
</Level1>


Dim firstGroup = (
    From l3 In xml...<Level3>
    Where l3.@Group.StartsWith("FirstGroup") AndAlso
        l3.@Value = "TRUE"
    Select l3.@Group
).FirstOrDefault()
Console.WriteLine(firstGroup)
  

FirstGroup2