0
解析XML文件時出現問題。它的結構看起來像:解析特定的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<teryt>
<catalog name="TERC" type="all" date="2014-01-01">
<row>
<col name="WOJ">02</col>
<col name="POW"/>
<col name="GMI"/>
<col name="RODZ"/>
<col name="NAZWA">DOLNOŚLĄSKIE</col>
<col name="NAZDOD">województwo</col>
<col name="STAN_NA">2014-01-01</col>
</row>
<row>
<col name="WOJ">02</col>
<col name="POW">01</col>
<col name="GMI"/>
<col name="RODZ"/>
<col name="NAZWA">bolesławiecki</col>
<col name="NAZDOD">powiat</col>
<col name="STAN_NA">2014-01-01</col>
</row>
...
</catalog
</teryt>
我現在有解析器,但它只讀文件到一個變量。我的解析器代碼。
package pl.op.web.common;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.primefaces.event.FileUploadEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.io.IOException;
import java.io.InputStream;
@Name("op.xmlParser")
@Scope(ScopeType.SESSION)
public class XMLParser extends DefaultHandler {
private Logger log = LoggerFactory.getLogger(XMLParser.class);
private InputStream uploadedAreaFile;
public void uploadAreaXML(FileUploadEvent event) {
try {
uploadedAreaFile = event.getFile().getInputstream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getAreaXml() {
try {
SAXParserFactory saxParserFactory = SAXParserFactory
.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
DefaultHandler defaultHandler = new DefaultHandler() {
Boolean wojTag = false;
Boolean powTag = false;
Boolean gmiTag = false;
Boolean rodzTag = false;
Boolean nazwaTag = false;
Boolean nazdodTag = false;
Boolean stan_naTag = false;
public void startElement(String uri, String localName,
String qName, Attributes attributes)
throws SAXException {
if (qName.equalsIgnoreCase("col")) {
wojTag = true;
}
if (qName.equalsIgnoreCase("col")) {
powTag = true;
}
if (qName.equalsIgnoreCase("col")) {
gmiTag = true;
}
if (qName.equalsIgnoreCase("col")) {
rodzTag = true;
}
if (qName.equalsIgnoreCase("col")) {
nazwaTag = true;
}
if (qName.equalsIgnoreCase("col")) {
nazdodTag = true;
}
if (qName.equalsIgnoreCase("col")) {
stan_naTag = true;
}
}
public void characters(char ch[], int start, int length)
throws SAXException {
if (wojTag.equals(true)) {
log.info("Woj : "
+ new String(ch, start, length));
}
if (powTag.equals(true)) {
log.info("Pow : "
+ new String(ch, start, length));
}
if (gmiTag.equals(true)) {
log.info("Gmi : "
+ new String(ch, start, length));
}
if (rodzTag.equals(true)) {
log.info("Rodz : "
+ new String(ch, start, length));
}
if (nazwaTag.equals(true)) {
log.info("Nazwa : "
+ new String(ch, start, length));
}
if (nazdodTag.equals(true)) {
log.info("Nazdod : "
+ new String(ch, start, length));
}
if (stan_naTag.equals(true)) {
log.info("Stan_na : "
+ new String(ch, start, length));
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
if (qName.equalsIgnoreCase("col")) {
wojTag = false;
}
if (qName.equalsIgnoreCase("col")) {
powTag = false;
}
if (qName.equalsIgnoreCase("col")) {
gmiTag = false;
}
if (qName.equalsIgnoreCase("col")) {
rodzTag = false;
}
if (qName.equalsIgnoreCase("col")) {
nazwaTag = false;
}
if (qName.equalsIgnoreCase("col")) {
nazdodTag = false;
}
if (qName.equalsIgnoreCase("col")) {
stan_naTag = false;
}
}
};
saxParser.parse(uploadedAreaFile, defaultHandler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
如何在單個變量中擁有每個屬性(WOJ,POW,NAZWA等)?
我無法得到你想要的輸出結果嗎?你能輸入一個你需要的輸出的例子嗎? @Nidhhog – Donvino
我想將
所以你只需要字符串變量與col的所有數據? – Donvino