无法使用XML解析从XML获取内部节点列表数据
问题描述:
我试图多次获取FL标签,但是当我尝试内部节点列表时,它只能获取第一个项目。更多信息请参阅我的输出。这是XML数据,我从Web服务无法使用XML解析从XML获取内部节点列表数据
<response uri="/ats/private/xml/JobOpenings/getRecords">
<result>
<JobOpenings>
<row no="1">
<FL val="JOBOPENINGID">
<![CDATA[ 100 ]]>
</FL>
<FL val="Published in website">
<![CDATA[ true ]]>
</FL>
<FL val="Modified by">
<![CDATA[ Admmin ]]>
</FL>
<FL val="Modified time">
<![CDATA[ Yesterday ]]>
</FL>
</row>
<row no="2">
<FL val="JOBOPENINGID">
<![CDATA[ 101 ]]>
</FL>
<FL val="Published in website">
<![CDATA[ true ]]>
</FL>
<FL val="Modified by">
<![CDATA[ Admin ]]>
</FL>
<FL val="Modified time">
<![CDATA[ 2 Days Ago ]]>
</FL>
</row>
<row no="3">
<FL val="JOBOPENINGID">
<![CDATA[ 102 ]]>
</FL>
<FL val="Published in website">
<![CDATA[ true ]]>
</FL>
<FL val="Modified by">
<![CDATA[ Admin ]]>
</FL>
<FL val="Modified time">
<![CDATA[ 2 Days Ago ]]>
</FL>
</row>
<JobOpenings>
<result>
</response>
得到这也是我在我的活动
public class AndroidXMLParsingActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(AppConfig.URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nodeList = doc.getElementsByTagName("row");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
Element playlistElement = (Element) node;
NodeList title = playlistElement.getElementsByTagName("FL");
for (int kl = 0; kl < title.getLength(); kl++) {
if (title.item(0).getChildNodes().item(0) != null) {
Element nameElement = (Element) title.item(0);
title = nameElement.getChildNodes();
Log.v("name===>", ((Node) title.item(0)).getNodeValue());
}
}
}
}
}
这里使用的代码是输出:
12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID 100
12-04 15:56:08.694: V/name===>(3918): JOBOPENINGID 101
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 102
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 103
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 107
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 108
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 118
12-04 15:56:08.704: V/name===>(3918): JOBOPENINGID 200
请帮助我。 ...........
答
为什么不使用XmlPullParser来解析XML?我从来没有使用过你的版本,但在我看来,XmlPullParser
会更好地工作,因为你告诉它专注于START_TAG
(例如),然后在你的例子中写下你想要找到的标签的名字(FL)。
XPP
要做的是,他会读完整个XML文档并搜索给定START_TAG
。一旦找到,你可以在switch
的情况下做任何你想做的事情。
答
可能是你在循环覆盖标题:
if (title.item(0).getChildNodes().item(0) != null) {
Log.v("name===>", ((Node) title.item(0).getChildNodes()).getNodeValue());
}
谢谢!现在,我能够从使用XmlPullParser获取数据,但依然没能取FL标记值 现在我有只能够获取“昨天”,但我还需要“修改时间”的值。 –
2014-12-04 12:14:20
尝试获取整个TAG(START_TAG),然后在其上做一个子字符串,因为他可能会从该TAG获取所有内容。 – 2014-12-05 12:05:23
要从val =“something”获取“某物”,请使用[getAttributeValue(null,“val”)](http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html#getAttributeValue java.lang.String,%20java.lang.String))当你在'START_TAG'和'getName()'是“FL”时。 – TWiStErRob 2014-12-07 10:52:43