Android,XMLParser - 读取XML
即时尝试从我的Android应用程序中的Web服务器读取XML,但我不知道如何搜索标签,我看到的所有示例都与我的不同:Android,XMLParser - 读取XML
<document>
<producer/>
<metadata></metadata>
<recorddata count="111">
<row>
<field name="numint" value="MTAwMQ=="/>
<field name="Grupo" value="NQ=="/>
<field name="Link" value="Q29ycmllbnRlcw=="/>
<field name="Nombre" value="Q29ycmllbnRlcw=="/>
<field name="Valor" value="MzQwMC4wMA=="/>
</row>
</recorddata>
</document>
我需要阅读里面RECORDATA行了,但是我不知道如何解决这个问题,这是我的代码:
private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
{
ArrayList<Record> Records = null;
int eventType = parser.getEventType();
Record currentRecord = null;
while (eventType != XmlPullParser.END_DOCUMENT){
String name = null;
switch (eventType){
case XmlPullParser.START_DOCUMENT:
Records = new ArrayList();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if (name == "row"){
currentRecord = new Record();
} else if (currentRecord != null){
if (name == "numint"){
currentRecord.numint = parser.getText();
} else if (name == "Grupo"){
currentRecord.group = parser.getText();
} else if (name == "Link"){
currentRecord.link= parser.getText();
}else if (name == "Nombre") {
currentRecord.name= parser.getText();
}else if (name == "Valor") {
currentRecord.value= parser.getText();
}
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
if (name.equalsIgnoreCase("row") && currentRecord != null){
Records.add(currentRecord);
}
}
eventType = parser.next();
}
printProducts(Records);
}
,但该记录列表在过程结束时清空,并我可以说是做了一些事情,因为有很多记录,需要等待2分钟,直到过程结束。
林不知道,如果使用的getName IM()正确,我应该被检查字段???如果是这样,我怎么知道在哪个领域即时通讯。我应该使用nextToken(),而不是?
为了让您可以使用该方法的属性:
parser.getAttributeValue(null, "value");
定义:
public abstract String getAttributeValue (String namespace, String name)
从帮助中获取:
*在API级别1。返回的属性值来标识通过命名空间URI和命名空间localName。如果命名空间被禁用,则命名空间必须为空。如果当前事件类型不是START_TAG,则会抛出IndexOutOfBoundsException。*
注意:替换所有字符串比较!
name == "row"
有了:
name.equals("row")
希望它能帮助。
这实际上确实有所帮助,列表不是空的,但现在我得到所有空值,列表中的每个元素都填充有空值的记录 –
对于例如, 行1: numint:空 组:空 链接:空 名称:空 值:空 –
难道这是因为数据被加密??????? –
我重写我的代码如下问题解决了:
case XmlPullParser.START_TAG:
name = parser.getName();
if (name.equals("row")){
currentRecord = new Record();
} else if (currentRecord != null) {
if(parser.getName().equals("field")) {
if(parser.getAttributeValue(null, "name").equalsIgnoreCase("numint")) {
currentRecord.numint = parser.getAttributeValue(null, "value");
}else if (parser.getAttributeValue(null, "name").equalsIgnoreCase("Grupo")) {
currentRecord.group = parser.getAttributeValue(null, "value");
}else if (parser.getAttributeValue(null, "name").equalsIgnoreCase("Link")) {
currentRecord.link = parser.getAttributeValue(null, "value");
}else if (parser.getAttributeValue(null, "name").equalsIgnoreCase("Nombre")) {
currentRecord.name = parser.getAttributeValue(null, "value");
}else if (parser.getAttributeValue(null, "name").equalsIgnoreCase("Valor")) {
currentRecord.value = parser.getAttributeValue(null, "value");
}
}
}
break;
考虑的东西通过Andreaoid答案,和一点点的调整,我可能没有问题,读去的xml文件
如果有帮助,您能否确认答案并进行投票?谢谢。 –
我现在意识到gettext的()没有得到任何东西,因为没有文字:p我会尝试做一些修改 –
嗯,我不知道怎么弄的“价值”的属性值:p –
你曾经尝试过使用SAX解析器? – yugidroid