Java 解析特定的XML文件

Java 解析特定的XML文件,java,xml,xml-parsing,sax,Java,Xml,Xml Parsing,Sax,我在解析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

我在解析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>

如何将每个属性(WOJ、POW、NAZWA等)都放在一个变量中?

这就是您可以做到的

包pl.op.web.common

import java.util.ArrayList;

import java.util.List;

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;

public class XMLParser extends DefaultHandler {
    public static void main(String[] args) {
        XMLParser parser = new XMLParser();
        parser.getAreaXml();
    }

    public void getAreaXml() {
        final List<StringBuilder> first = new ArrayList<StringBuilder>();
        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")) {
                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("WOJ"))
                                wojTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("POW"))
                                powTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("GMI"))
                                gmiTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("RODZ"))
                                rodzTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0)
                                    .equalsIgnoreCase("NAZWA"))
                                nazwaTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase(
                                    "NAZDOD"))
                                nazdodTag = true;
                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase(
                                    "STAN_NA"))
                                stan_naTag = true;
                    }
                }

                public void characters(char ch[], int start, int length)
                        throws SAXException {

                    StringBuilder temp = new StringBuilder();

                    if (wojTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (powTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (gmiTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (rodzTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (nazwaTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (nazdodTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (stan_naTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }

                    first.add(temp);
                }

                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("E:/ResourcePDF/zippertest/src/test.xml",
                    defaultHandler);

            for (StringBuilder s : first) {
                System.out.print(s);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
import java.util.ArrayList;
导入java.util.List;
导入javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.xml.sax.Attributes;
导入org.xml.sax.SAXException;
导入org.xml.sax.helpers.DefaultHandler;
公共类XMLParser扩展了DefaultHandler{
公共静态void main(字符串[]args){
XMLParser=新的XMLParser();
getAreaXml();
}
public void getAreaXml(){
final List first=新的ArrayList();
试一试{
SAXParserFactory SAXParserFactory=SAXParserFactory.newInstance();
SAXParser SAXParser=saxParserFactory.newSAXParser();
DefaultHandler DefaultHandler=新的DefaultHandler(){
布尔值wojTag=false;
Boolean-powTag=false;
布尔gmiTag=false;
布尔值rodzTag=false;
布尔值nazwaTag=false;
布尔标记=false;
布尔标准=假;
public void startElement(字符串uri、字符串localName、,
字符串(名称、属性)
抛出SAX异常{
if(qName.equalsIgnoreCase(“col”)){
if(attributes.getValue(0)!=null)
if(attributes.getValue(0.equalsIgnoreCase(“WOJ”))
wojTag=true;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0.equalsIgnoreCase(“POW”))
powTag=true;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0.equalsIgnoreCase(“GMI”))
gmiTag=真;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0.equalsIgnoreCase(“RODZ”))
rodzTag=真;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0)
.equalsIgnoreCase(“纳兹瓦”))
纳兹瓦塔格=真;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0).equalsIgnoreCase(
“国防部”))
nazdodTag=true;
if(attributes.getValue(0)!=null)
if(attributes.getValue(0).equalsIgnoreCase(
“STAN_NA”))
stan_naTag=真;
}
}
公共无效字符(字符ch[],整数开始,整数长度)
抛出SAX异常{
StringBuilder temp=新的StringBuilder();
if(wojTag.equals(true)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
if(powTag.equals(true)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
if(gmiTag.equals(true)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
if(rodzTag.equals(true)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
如果(纳兹瓦塔格等于(真)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
if(标记等于(真)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
如果(标准值等于(真)){
临时追加(新字符串(ch,start,length));
临时附加(“”);
}
首先,添加(temp);
}
public void endElement(字符串uri、字符串localName、,
字符串(qName)引发异常{
if(qName.equalsIgnoreCase(“col”)){
wojTag=false;
}
if(qName.equalsIgnoreCase(“col”)){
powTag=假;
}
if(qName.equalsIgnoreCase(“col”)){
gmiTag=假;
}
if(qName.equalsIgnoreCase(“col”)){
rodzTag=假;
}
if(qName.equalsIgnoreCase(“col”)){
nazwaTag=假;
}
if(qName.equalsIgnoreCase(“col”)){
nazdodTag=false;
}
if(qName.equalsIgnoreCase(“col”)){
stan_naTag=假;
}
}
};
parse(“E:/ResourcePDF/zippertest/src/test.xml”,
违约处理人);
对于(StringBuilder:第一个){
系统输出打印;
}
}捕获(例外e){
e、 printStackTrace();
}
}
}
对于上述xml文件,输出将是这样的

02 DOLNO?L?SKIE województwo 2014-01-01 02 01 boles?awiecki powiat 2014-01-01

我正在将数据btw行标记选通到一个StringBuilder中。并将其添加到
import java.util.ArrayList;

import java.util.List;

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;

public class XMLParser extends DefaultHandler {
    public static void main(String[] args) {
        XMLParser parser = new XMLParser();
        parser.getAreaXml();
    }

    public void getAreaXml() {
        final List<StringBuilder> first = new ArrayList<StringBuilder>();
        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")) {
                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("WOJ"))
                                wojTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("POW"))
                                powTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("GMI"))
                                gmiTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase("RODZ"))
                                rodzTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0)
                                    .equalsIgnoreCase("NAZWA"))
                                nazwaTag = true;

                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase(
                                    "NAZDOD"))
                                nazdodTag = true;
                        if (attributes.getValue(0) != null)
                            if (attributes.getValue(0).equalsIgnoreCase(
                                    "STAN_NA"))
                                stan_naTag = true;
                    }
                }

                public void characters(char ch[], int start, int length)
                        throws SAXException {

                    StringBuilder temp = new StringBuilder();

                    if (wojTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (powTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (gmiTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (rodzTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (nazwaTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (nazdodTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }
                    if (stan_naTag.equals(true)) {

                        temp.append(new String(ch, start, length));
                        temp.append("  ");
                    }

                    first.add(temp);
                }

                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("E:/ResourcePDF/zippertest/src/test.xml",
                    defaultHandler);

            for (StringBuilder s : first) {
                System.out.print(s);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}