Java 解析特定的XML文件
我在解析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 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();
}
}
}