以下是我的xml:
<Body>
<tag1 xmlns=""> <innerTag></innerTag> </tag1>
</Body>
问题是我无法在<tag1></tag1>
内获取字符串,即 <innerTag></innerTag>
。以下是我的逻辑:
public void startElement(final String uri, final String localName,
final String qName, final Attributes attributes)
throws SAXException {
if ("tag1".equalsIgnoreCase(qName)){
inTag1 = true;
System.out.println("start");
}
}
public void endElement(final String uri, final String localName,
final String qName) throws SAXException {
if ("tag1".equalsIgnoreCase(qName)) {
System.out.println("end");
inTag1 = false;
}
}
public void characters(final char[] ch, final int start, final int length) {
if (inTag1) {
System.out.println("@@@" + new String(ch, start, length));
}
}
}
但它给了我空的输出。任何人都可以提供帮助。
答案 0 :(得分:1)
在您对UVM回答的评论中写道
实际上内部标记是这个xml中的一种xml。所以我想把它作为一个整体
无法告诉SAX解析器不处理元素内的所有XML并将整个内容作为字符串返回。基本上,您有两种选择:
如果您控制了您尝试解析的XML文档,请将其格式更改为
<Body>
<tag1 xmlns=""><![CDATA[ <innerTag></innerTag> ]]></tag1>
</Body>
答案 1 :(得分:0)
您需要检查"innerTag"
"tag1"
intead
if ("innerTag".equalsIgnoreCase(qName)){
inTag1 = true;
System.out.println("start");
}
基本上你的innerTag是tag1的子元素。所以SAX解析器继续解析,因为它直到有效的XML元素。