所以我不確定這是否可能。但我想掃描一個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