<?xml version="1.0" encoding="utf-8"?>
<assurances>
<assurance hasReference="true">
<message>You're Awesome!</message>
<reference>Genesis 1:26</reference>
</assurance>
<assurance hasReference="true">
<message>Your Wonderfull!</message>
<reference>Genesis 1:26</reference>
</assurance>
</assurances>
我正在使用这样的代码来尝试检索它:
int eventType = -1;
while(eventType != XmlResourceParser.END_DOCUMENT)
{
XmlResourceParser assurances = getResources().getXml(R.xml.assurances);
String name = assurances.getText();
Log.d(TAG, name);
try {
if (assurances.getEventType() == XmlResourceParser.START_TAG) {
String s = assurances.getName();
if (s.equals("assurance")) {
String strMessage = assurances.getAttributeValue(null, "message");
String strReference = assurances.getAttributeValue(null, "reference");
Log.d(TAG, strMessage);
Log.d(TAG, strReference);
}
}
} catch (XmlPullParserException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
}
它没有得到数据,我不知道从哪里开始.
解决方法:
您不需要使用getAttributeValue方法,而是需要使用getText()方法.我已对您的代码进行了一些更改,因此如果您使用下面的代码,那么它将正常工作:
int eventType = -1;
while(eventType != XmlResourceParser.END_DOCUMENT)
{
XmlResourceParser assurances = getResources().getXml(R.xml.assurances);
String name = assurances.getText();
Log.d(TAG, name);
try {
if (assurances.getEventType() == XmlResourceParser.START_TAG) {
String s = assurances.getName();
if (s.equals("assurance")) {
assurances.next(); /// moving to the next node
if(assurances.getName() != null && assurances.getName().equalsIgnoreCase("message")){
String strMessage = assurances.getText(); ///to get value getText() method should be used
assurances.next(); ///jumping on to the next node
String strReference = assurances.getText(); ////similar to above
}
Log.d(TAG, strMessage);
Log.d(TAG, strReference);
}
}
} catch (XmlPullParserException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。