我正在做一个解析XML中的一些数据的项目.
例如,XML是
<abc>abcdefghijklmno</abc>
Run Code Online (Sandbox Code Playgroud)
我需要解析"abcdefghijkmnlp".
但是当我测试我的解析时,我发现了一个大问题:
public class parser{
private boolean hasABC = false;
//Constructor HERE
......................
......................
@Override
public void startDocument () throws SAXException{
}
@Override
public void endDocument () throws SAXException{
}
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = true;
}
}
@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException{
if ("abc".equalsIgnoreCase(localName)) {
this.hasABC = false;
}
}
@Override
public void characters(char ch[], int start, …Run Code Online (Sandbox Code Playgroud) 在使用StAX和XMLStreamReader读取XML文件时,我遇到了一个奇怪的问题.不确定它是错误还是我做错了什么.还在学习StAX.
所以问题是,
XMLStreamConstants.CHARACTERS事件中,当我收集节点文本作为XMLStreamReader.getText()方法.ABC & XYZ只返回ABC简化的Java源码:
// Start StaX reader
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
try {
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(inStream);
int event = xmlStreamReader.getEventType();
while (true) {
switch (event) {
case XMLStreamConstants.START_ELEMENT:
switch (xmlStreamReader.getLocalName()) {
case "group":
// Do something
break;
case "source":
isSource = true;
break;
case "target":
isTarget = true;
break;
default:
isSource = false;
isTrans = false;
break;
}
break;
case XMLStreamConstants.CHARACTERS:
if (srcData != null) {
String srcTrns …Run Code Online (Sandbox Code Playgroud)