我的xml字符串是这样的:
<facebookfriends>
<data>
<id> 501334283</id>
<location>
<id>46464 </id>
<name>abc </name>
</location>
<name> Name Something</name>
<education>
<school>
<id> 45454 </id>
<name> SSSSSSSSSS</name>
</school>
<year>
<id> 45353</id>
<name> 2001</name>
</year>
<type>High School </type>
</education>
<education>
<school>
<id>
134960646529265</id>
<name> SSS , University</name>
</school>
<year>
<id> 132393000129123</id>
<name> 2001</name>
</year>
<type>High School </type>
</education>
<education>
<concentration>
<id> 6868</id>
<name> Computer Science and Engineering
</name>
</concentration>
<school>
<id> 86868</id>
<name>
Hellio
</name>
</school>
<year>
<id> 4646</id>
<name> 2008</name>
</year>
<type>College </type>
</education>
</data>
<data>XYZ</data>
</facebookfriends>
我如何获得教育名单意味着学校名称。我的要求是这样的,从第一个数据标记开始和数据标记结束,然后第二个数据标记开始,数据标记结束和第三个等等获取教育详细信息列表。所以我尝试过这样,但无法获取数据。
StringReader reader = new StringReader(xmlbody);//XML body is my xml string
InputSource source = new InputSource(reader);
Document document = dbBuilder.parse(source);
NodeList dataList = document.getElementsByTagName("data");
for(int i=0;i<dataList.getLength();i++) {
Node node = dataList.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE) {
Element data = (Element)node;
org.jsoup.nodes.Document xmlDoc = Jsoup.parse(data.getTextContent(), "", Parser.xmlParser());
for (org.jsoup.nodes.Element e : xmlDoc.select("education")) {
System.out.println(e);
}
}
}
预期输出:在第一次迭代中我想得到:SSSSSSSSSS,SSS,大学,Hellio
请帮助
答案 0 :(得分:1)
查看XML中的结构。
如果你想要学校的名字,那么它的结构如下:
<education>
<school>
<name>
要选择它,只需使用
即可 Document doc = Jsoup.parse(xml);
Elements e = doc.select("education school name"); //Tree structure for tags
for (Element el : e) {
System.out.println(el.text());
}
这将输出
run:
SSSSSSSSSS
SSS , University
Hellio