【发布时间】:2014-04-05 16:06:31
【问题描述】:
这里有一个小问题,我不知道如何解决它。 我有一个如下所示的 XML 文件:
<?xml version="1.0"?>
<item>
<title>Item 1</name>
<description>Description Text 1<br />Description Text 2</description>
</item>
我有一个如下所示的 SAX 解析器:
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if ("item".equals(qName)) {
currentItem = new Item();
} else if ("title".equals(qName)) {
parsingTitle = true;
} else if ("description".equals(qName)) {
parsingDescription = true;
}
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("Testing endelement");
if ("item".equals(qName)) {
Items.add(currentItem);
currentItem = null;
} else if ("title".equals(qName)) {
parsingTitle = false;
} else if ("description".equals(qName)) {
parsingDescription = false;
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
System.out.println("writing");
if (parsingTitle) {
if (currentItem != null)
currentItem.setTitle(new String(ch, start, length));
} else if (parsingDescription) {
if (currentItem != null) {
currentItem.setDescription(new String(ch, start, length));
parsingDescription = false;
}
}
问题在于 SAX 只解析标记中文本的第一部分,直到 "
" 文本(即
标记)并忽略其余部分。
如何让 SAX 解析器忽略“
”并解析其余的描述?
谢谢。
【问题讨论】:
-
您使用的是什么 SAX 解析器?
-
Android java sax 解析器,如果我理解正确的话。
-
如果您从
characters处理程序中删除parsingDescription = false并将currentItem.setDescription(new String(ch, start, length));更改为currentItem.setDescription(currentItem.getDescription() + new String(ch, start, length));,结果是否会发生变化? -
不幸的是,给出的代码没有帮助(将解析的描述更改为“nullDescription Text 1”),我不太明白您提供的链接与我的问题有何关系。
标签: java android xml parsing sax