我正在尝试找出一种方法来重写一些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_TAG。它确实命中了XmlPullParser.START_TAG,但它似乎只是跳过/忽略了所有的END_TAG。
这应该是怎么回事呢?还是我错过了什么?
任何帮助都非常感谢,
太好了。
发布于 2010-12-24 12:43:36
哦,我很抱歉,一如既往地,写一个通用的代码块被证明是一个坏主意。我没有注意到我没有在这里发布的一段代码中有异常,这段代码应该放到XmlPullParser.END_TAG中。删除它,并且像魅力一样工作:)
发布于 2010-12-24 05:00:45
我不确定这是不是你的问题,但是你遗漏了一个
</root>你有没有试过在开始标记和内容之后打印出eventType类型?
https://stackoverflow.com/questions/4520954
复制相似问题