我有一个xml文件,如下所示
<Event Id="258" Key="123456">
<SubEvent Id="1">
Microsoft will begin selling its "Kinect" full-body motion-sensing game system from November 4, while Sony launched its "Move" motion-controlled gaming system on September 15.
</SubEvent>
</Event>解析器处理程序的一部分
public void startElement(String uri, String localName,String qName,
Attributes atts) throws SAXException {
if (qName.equalsIgnoreCase("event")) {
scored = false;
event = true;
if (//my condition){
scored = true;
}
if (scored){
sb= new StringBuffer();
}
}
public void characters(char ch[], int start, int length) throws SAXException {
if (event) {
event = false;
}
if (subevent) {
if (scored){
sb.append(new String(ch, start, length));
}
subevent = false;
}
}但这只会返回“Microsoft将开始出售其产品”
我读到解析器可能会调用多个字符。如何将不同的调用连接在一起?你能解释一下逻辑流程吗?
附加信息:我打印了所有的元素,看起来句子的其余部分没有被调用,为什么?
Start Element :Event
Start Element :SubEvent
SubEvent:
Microsoft will begin selling its
End Element :SubEvent
End Element :Event
Start Element :Event
Start Element :SubEvent
SubEvent:
Nintendo will sell a new version of its DS handheld device that can play games and show movies in 3D without glasses sometime before March 2011.
End Element :SubEvent
End Element :Event发布于 2013-08-12 18:49:12
characters(char ch[], int start, int length)方法不能读取整行,您应该将字符存储在StringBuffer中并在endElement方法中使用它。
public void endElement(String uri, String localName, String qName) throws SAXException
{
if (qName.equalsIgnoreCase("event"))
{
System.out.println(sb.toString());
}
sb = new StringBuffer();
}发布于 2013-08-13 09:53:53
解决了。
public void endElement(String uri, String localName,
String qName) throws SAXException {
if (qName.equalsIgnoreCase("event")) {
scored = false;
}
if (qName.equalsIgnoreCase("subevent")){
subevent=false;
}
}https://stackoverflow.com/questions/18184293
复制相似问题