【发布时间】:2013-11-20 07:32:14
【问题描述】:
我有以下 XML
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<questions>
<question topic="net">
<questiontext>Which of the following applies to TCP?</questiontext>
<answers correct="true">
<answer correct="true">reliable</answer>
<answer correct="false">connectionless</answer>
<answer correct="true">connection-oriented</answer>
<answer correct="false">datagram-based</answer>
</answers>
</question>
</questions>
我正在尝试使用以下代码对其进行解析,以获取“answer”元素上“正确”属性的值
private ArrayList<MCAnswer> readAnswers(XmlPullParser parser) throws IOException, XmlPullParserException {
// create an ArrayList to which MCAnswers will be added below
ArrayList<MCAnswer> answers = new ArrayList<MCAnswer>();
// starting at the <answers> element...
parser.require(XmlPullParser.START_TAG, ns, "answers");
// loop through the individual <answer> elements
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
// read in answer text
String answerText = readText(parser);
// TODO how to get value of "correct" attribute of <answer>?
//debugging variables
int numOfAttrs = parser.getAttributeCount(); //returns -1, not right!
String element = parser.getName(); //returns "answer", right!
String attr = parser.getAttributeValue(ns, "correct"); //returns null, not right!
}
return answers;
}
我的问题是 String attr = parser.getAttributeValue(ns, "正确"); 我希望它返回值“true”或“false”,但它返回 null,好像解析器找不到属性,上面的 getAttributeValues() 也返回 -1(IndexOutOfBoundsError?)但似乎我是正确的标记为 getName() 并且节点文本返回正确的值。
我做错了什么导致我无法访问该属性?
【问题讨论】:
-
尝试使用 dom 解析器
-
parser.require(XmlPullParser.START_TAG, ns, "answers");返回什么?此外,我没有看到任何代码将解析器从answers移动到第一个answer。最后,假设前两个问题的一切都按计划进行,while (parser.next() != XmlPullParser.END_TAG)对于解析器遇到的第一个</answer>将是错误的。也就是说,除非readText(parser)消耗...
标签: android xmlpullparser