按属性值搜索元素

时间:2012-09-04 14:50:16

标签: jsoup

所以我不确定这是否可行。但我想扫描XML文档以查找具有特定属性值的所有元素。

元素是什么或属性类型无关紧要......我只需要根据属性值找到它们。

e.g。我正在寻找“鸭子”这个词

<person name="Fred" thing="duck"/>
<person name="Mary"/>
<animal name="duck" thing="swims"/>

第一个和第三个匹配,第二个不匹配。

有什么想法吗?

非常感谢。

2 个答案:

答案 0 :(得分:9)

我知道这个答案很好,但我认为这对其他人有用。有一种比上述方法更好的方法:

Elements ducks = doc.select("person[*=duck]");

这将返回仅包含值为“duck”的属性的元素。

在jsoups网站上有用的作弊:http://jsoup.org/apidocs/org/jsoup/select/Selector.html

答案 1 :(得分:5)

不确定使用选择器是否可行。但也许你可以尝试这样的事情:

final String input = "<person name=\"Fred\" thing=\"duck\"/>"
        + "<person name=\"Mary\"/>"
        + "<animal name=\"duck\" thing=\"swims\"/>";


Document doc = Jsoup.parse(input);
Elements withAttr = new Elements();


for( Element element : doc.getAllElements() )
{
    for( Attribute attribute : element.attributes() )
    {
        if( attribute.getValue().equalsIgnoreCase("duck") )
        {
            withAttr.add(element);
        }
    }
}