所以我不确定这是否可能。但我想扫描一个XML文档来查找具有特定属性值的所有元素。按属性值搜索元素
元素是什么或属性类型是无关紧要的......我只需要根据属性值来找到它们。
例如我正在寻找单词“duck”
<person name="Fred" thing="duck"/>
<person name="Mary"/>
<animal name="duck" thing="swims"/>
第一个和第三个应该匹配,第二个不匹配。
任何想法?
非常感谢。
所以我不确定这是否可能。但我想扫描一个XML文档来查找具有特定属性值的所有元素。按属性值搜索元素
元素是什么或属性类型是无关紧要的......我只需要根据属性值来找到它们。
例如我正在寻找单词“duck”
<person name="Fred" thing="duck"/>
<person name="Mary"/>
<animal name="duck" thing="swims"/>
第一个和第三个应该匹配,第二个不匹配。
任何想法?
非常感谢。
如果选择器可以实现这一点,则不能确定。但也许你可以尝试这样的事情:
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);
}
}
}
我知道这个答案是事后,但我认为这将是有用的其他人。有比上面的方法更好的方法:
Elements ducks = doc.select("person[*=duck]");
这将返回仅包含值为“鸭”的属性的元素。在jsoups网站
有用的作弊sheat:http://jsoup.org/apidocs/org/jsoup/select/Selector.html
(甚至更晚的回应)看起来你不能在没有指定名称的情况下搜索属性(在网站上试试你的查询)。此外,海报不仅仅是“人物”标签。在这种情况下,Ollo的答案似乎仍然是最好的解决方案。 –
谢谢,做这项工作。我希望有一种比多次迭代更有效的方法,但是这种方法效果很好,并且没有任何明显的长时间。谢谢! – user1389920
是的,也认为theres更好的解决方案,但不幸的是我没有找到一个。无论如何...总比没有好。 – ollo