Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blackberry kXML(XmlPullParser)未命中END_标记_Blackberry_Xml Parsing_Xmlpullparser_Kxml2 - Fatal编程技术网

Blackberry kXML(XmlPullParser)未命中END_标记

Blackberry kXML(XmlPullParser)未命中END_标记,blackberry,xml-parsing,xmlpullparser,kxml2,Blackberry,Xml Parsing,Xmlpullparser,Kxml2,我正试图找到一种重写一些XML解析代码的方法。我目前正在使用kXML2,下面是我的代码- byte[] xmlByteArray; try { xmlByteArray = inputByteArray; ByteArrayInputStream xmlStream = new ByteArrayInputStream(xmlByteArray); InputStreamReader xmlReader = new InputStr

我正试图找到一种重写一些XML解析代码的方法。我目前正在使用kXML2,下面是我的代码-

    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如下-

<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_标记。它确实命中了XmlPullParser.START_标记,但似乎跳过/忽略了所有END_标记

这就是它的工作原理吗?还是我遗漏了什么

非常感谢您的帮助,
特加

我们不确定这是否是您的问题,但您缺少了一个

</root>

您是否尝试打印出开始标记和内容之后的eventType类型

哎呀,很抱歉,像往常一样,写一个全面的块是个坏主意。我没有注意到我没有在这里发布的一段代码中存在异常,这段代码应该放在XmlPullParser.END_标记中。移除它并像魅力一样工作: