无法使用XmlPullParser访问属性

时间:2013-11-14 02:07:40

标签: android xmlpullparser

我有以下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,“correct”); 我希望它返回值“true”或“false”但它返回null,好像解析器找不到属性,上面的getAttributeValues()也返回-1(IndexOutOfBoundsError?)但似乎我是正确的标记为getName(),节点文本返回正确的值。

我做错了什么阻止我访问该属性?

1 个答案:

答案 0 :(得分:0)

我找到了答案 - 在解析元素的文本节点之前移动解析属性。解析器逐步进入元素后,就无法再访问这些属性了。