Java 使用SAX解析XML中的问题

Java 使用SAX解析XML中的问题,java,xml,xml-parsing,saxparser,Java,Xml,Xml Parsing,Saxparser,我有一个XML,我正试图解析它 2. 中交 行动 2. 284 14 10 启动VM4 行动 10 12 关闭 行动 12 我使用SAX来解析这个。 一切都很好,但每次循环时,我应该得到一个id为2的块,然后是另一个id为10和12的块。然后我将所有这些块添加到测试中 我的部分代码是: public void startElementString uri、String localName、String qName、, 属性引发SAX异常{ nqName=qName; tag_name_List.

我有一个XML,我正试图解析它

2. 中交 行动 2. 284 14 10 启动VM4 行动 10 12 关闭 行动 12 我使用SAX来解析这个。 一切都很好,但每次循环时,我应该得到一个id为2的块,然后是另一个id为10和12的块。然后我将所有这些块添加到测试中

我的部分代码是:

public void startElementString uri、String localName、String qName、, 属性引发SAX异常{ nqName=qName; tag_name_List.setElementAtnqName,级别; 级别=级别+1; } public void endElementString uri、字符串localName、, 字符串qName引发SAXException{ 级别=级别-1; tag_name_List.removeelementalLevel; } 公共void字符char ch[],int start,int length异常{ 如果级别!=0{ ////////////////一些代码 }否则,如果级别==5 &&tag_name_List.elementAt1.equalsTest &&tag_name_List.elementAt2.equalBlocks &&tag_name_List.elementAt3.equalBlock &&nqName.equalsIgnoreCaseBlockId{ 块=新块; test.addblock; block.setIdnew Stringch,起始,长度; block.setWorkflowIdworkflow.getId; }如果级别==5&&…{ //////代码继续 注意,这是一个巨大的xml和巨大的代码,所以只需部分共享

但这里的问题是:

我第一次得到身份证是2, 然后\n 然后又是10号 然后\n 那么我是12号 然后\n。 我不确定为什么会收到这些\n

我可以设置if条件以避免该实体,但如果设置if条件,则会丢失附加到该id的一些信息,这些信息稍后会与该id关联

有没有人面对过这一点,并能给出一个指针

如果需要更多信息,请告诉我

调试完代码后,我发现它基本上是从

14 因为这里的下一行将有一个\r和\n

如何避免这种情况?

您指定了nqName=qName。在下一次迭代之前您是否更改过该值

例如,如果在离开BlockId元素的上下文时不更改该值,则当您在元素外部但尚未在名称内部时,该值仍将等于BlockId。characters方法将读取在该元素中找到的所有空白

您的endElement中可能应该重置nqName。请尝试添加

nqName = null;

添加到endElement方法。

请添加SAX处理程序实现。