首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kXML (XmlPullParser)未命中END_TAG

kXML (XmlPullParser)未命中END_TAG
EN

Stack Overflow用户
提问于 2010-12-24 01:13:21
回答 2查看 980关注 0票数 0

我正在尝试找出一种方法来重写一些XML解析代码。我目前正在使用kXML2,这是我的代码-

代码语言:javascript
复制
    byte[] xmlByteArray;
    try {
        xmlByteArray = inputByteArray;
        ByteArrayInputStream xmlStream = new ByteArrayInputStream(xmlByteArray);
        InputStreamReader xmlReader = new InputStreamReader(xmlStream);
        KXmlParser parser = new KXmlParser();
        parser.setInput(xmlReader);
        parser.nextTag();

        while(true)
        {
            int eventType = parser.next();
            String tag = parser.getName();
            if(eventType == XmlPullParser.START_TAG)
            {
                System.out.println("****************** STARTING TAG "+tag+"******************");
                if(tag == null || tag.equalsIgnoreCase(""))
                {
                    continue;
                }
                else if(tag.equalsIgnoreCase("Category"))
                {
                    // Gets the name of the category.
                    String attribValue = parser.getAttributeValue(0);
                }
            }
            if(eventType == XmlPullParser.END_TAG)
            {
                System.out.println("****************** ENDING TAG "+tag+"******************");
            }
            else if(eventType == XmlPullParser.END_DOCUMENT)
            {
                break;
            }
    }
    catch(Exception ex)
    {

    }

我的输入XML如下:

代码语言:javascript
复制
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns="">
<Category name="xyz">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>
<Category name="abc">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>
<Category name="def">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>   

简单地说,我的问题是,我希望它在遇到结束xml标记时命中XmlPullParser.END_TAG。它确实命中了XmlPullParser.START_TAG,但它似乎只是跳过/忽略了所有的END_TAG

这应该是怎么回事呢?还是我错过了什么?

任何帮助都非常感谢,

太好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-24 12:43:36

哦,我很抱歉,一如既往地,写一个通用的代码块被证明是一个坏主意。我没有注意到我没有在这里发布的一段代码中有异常,这段代码应该放到XmlPullParser.END_TAG中。删除它,并且像魅力一样工作:)

票数 0
EN

Stack Overflow用户

发布于 2010-12-24 05:00:45

我不确定这是不是你的问题,但是你遗漏了一个

代码语言:javascript
复制
</root>

你有没有试过在开始标记和内容之后打印出eventType类型?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4520954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档