我正在尝试多次获取 FL 标签,但是当我尝试内部节点列表时,它只获取第一项。有关更多信息,请参阅我的输出。这是我从 Web 服务获得的 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());
}