这是我正在尝试的:我有一个名单。我想根据名称搜索XML文件。
XML看起来像这样:
<book>
<string> book name </string>
<array>
<string> Name1 </string>
<string> Name2 </string>
</array>
</book>
现在我想搜索说“Name1”,如果匹配,我想得到这本书的名字。 这可能吗?如果是,有人可以提供一些代码/片段,或者告诉我如何做到这一步的步骤。谢谢
答案 0 :(得分:0)
基本上:
1)为XML内容设置一个InputStream(如果你正在下载它,或者从getResources()中读取它)
2)设置解析器:XmlPullParser parser = Xml.newPullParser();
3)开始循环读取XML。当parser.getName()。equals(“book”)时,继续,直到你到达parser.getName().equals("string")
并保存parser.getText()的结果;然后,当您继续并点击parser.getName().equals("array")
然后再继续parser.getName().equals("string")
时,请检查parser.getText()的结果,看它是否与您的搜索字符串匹配。
清除泥土?
解析XML比20年前左右宣传的要困难得多,但是一旦你理解了解析器在读取XML时就会更加容易,它会让你更容易看到如何使用它的整体情况实现它。研究该链接,它为您提供了您需要知道的一切。
答案 1 :(得分:0)
有很多解析XML的方法,我建议你使用Jsoup
从XML中提取数据非常容易。
String html = "<?xml version=\"1.0\" encoding=\"UTF-8\">
<book>
<string> book name </string>
<array>
<string> Name1 </string>
<string> Name2 </string>
</array>
</book></xml>";
Document doc = Jsoup.parse(html, "", Parser.xmlParser());
Element book = doc.select("book").first();
Element bookName = book.getElementsByTag("string").first();
Elements array = book.getElementsByTag("array");
for (Element e : array.select("string")) {
//....
}
答案 2 :(得分:0)
谢谢大家的答案。我正在使用教程here并编写此方法来搜索XML。
public List<String> search(String key, String url){
List<String> items = new ArrayList<String>();
XmlParser parser = new XmlParser();
String xml = parser.getXmlFromUrl(url); // getting XML
Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName("book");
for(int i = 0; i<nl.getLength();i++){
Element e = (Element) nl.item(i);
NodeList n = e.getElementsByTagName("string");
if(parser.getElementValue(n.item(1)).equals(key) ||
parser.getElementValue(n.item(2)).equals(key) ){
items.add(parser.getElementValue(n.item(0)));
}
}
return items;
}