按属性值搜索元素

use*_*920 4 jsoup

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

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

我正在寻找"鸭子"这个词

<person name="Fred" thing="duck"/>
<person name="Mary"/>
<animal name="duck" thing="swims"/>
Run Code Online (Sandbox Code Playgroud)

第一个和第三个应匹配,第二个不匹配.

有任何想法吗?

非常感谢.

Pad*_*lam 11

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

Elements ducks = doc.select("person[*=duck]");
Run Code Online (Sandbox Code Playgroud)

这将返回仅包含值为"duck"的属性的元素.

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


oll*_*llo 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)