XML - 基础篇(下)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: XML - 基础篇(下)

8.DOM、SAX和JAXP解析

image.png

image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png9.JAXP的SAX支持image.png

Ps:一般只用第二组API方法,因为比第一组方便。image.pngimage.pngimage.png10.应用之【SAX解析XML文档】

image.pngimage.png

packagecom.muke.sax;
importjava.io.IOException;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
importorg.xml.sax.SAXException;
importcom.muke.sax.handler.MuKeHandler;
publicclassSAXParse {
publicstaticvoidmain(String[] args) throwsParserConfigurationException, SAXException, IOException {
//创建SAX解析器工厂SAXParserFactoryfactory=SAXParserFactory.newInstance();
//创建SAX解析器SAXParserparser=factory.newSAXParser();
//开始解析XML文档parser.parse("D://firstxml.xml", newMuKeHandler());
    }
}
packagecom.muke.sax.handler;
importorg.xml.sax.Attributes;
importorg.xml.sax.SAXException;
importorg.xml.sax.helpers.DefaultHandler;
publicclassMuKeHandlerextendsDefaultHandler {
//定义一个变量来保存当前正在处理的tagprivateStringcurrentTag;
//每当处理文本数据时将触发该方法@Overridepublicvoidcharacters(char[] ch, intstart, intlength)
throwsSAXException {
Stringcontent=newString(ch,start,length);
if (content.trim().length()>0) {
System.out.println("<"+currentTag+">元素的值是:"+content.trim());
        }
    }
//解析文档结束时触发该方法@OverridepublicvoidendDocument() throwsSAXException {
System.out.println("解析文档结束");
    }
//解析元素结束时触发该方法@OverridepublicvoidendElement(Stringuri, StringlocalName, StringqName)
throwsSAXException {
System.out.println("处理元素结束:"+qName);
    }
//每当解析文档开始时触发该方法@OverridepublicvoidstartDocument() throwsSAXException {
System.out.println("解析文档开始");
    }
@OverridepublicvoidstartElement(Stringuri, StringlocalName, StringqName,
Attributesattributes) throwsSAXException {
System.out.println("开始处理元素:"+qName);
currentTag=qName;
if (attributes.getLength()>0) {
System.out.println("<"+currentTag+">元素的属性如下:");
for (inti=0; i<attributes.getLength(); i++) {
System.out.println(attributes.getQName(i)+"--->"+attributes.getValue(i));
            }
        }
    }
}
File:
<?xmlversion="1.0"encoding="utf-8"?><书籍列表><计算机书籍><书名>Java思想</书名><作者>小王</作者><价格>79.00</价格></计算机书籍><计算机书籍><书名>Sprint指南</书名><作者>小李</作者><价格>89.00</价格></计算机书籍></书籍列表>
Console:解析文档开始开始处理元素:书籍列表开始处理元素:计算机书籍开始处理元素:书名<书名>元素的值是::Java思想处理元素结束:书名开始处理元素:作者<作者>元素的值是:小王处理元素结束:作者开始处理元素:价格<价格>元素的值是:79.00处理元素结束:价格处理元素结束:计算机书籍开始处理元素:计算机书籍开始处理元素:书名<书名>元素的值是:Sprint指南处理元素结束:书名开始处理元素:作者<作者>元素的值是:小李处理元素结束:作者开始处理元素:价格<价格>元素的值是:89.00处理元素结束:价格处理元素结束:计算机书籍处理元素结束:书籍列表解析文档结束

11.应用之【SAX生成XML文档】

image.png

image.png

packagecom.muke.sax;
importjava.io.File;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Result;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.sax.SAXTransformerFactory;
importjavax.xml.transform.sax.TransformerHandler;
importjavax.xml.transform.stream.StreamResult;
importorg.xml.sax.helpers.AttributesImpl;
publicclassBuildXMLMain {
publicstaticvoidmain(String[] args) throwsException {
//创建保存XML的结果流对象ResultresultXML=newStreamResult(newFile("D://firstxml1.xml"));
//获取sax生成工厂实例SAXTransformerFactorysaxTransformerFactory=(SAXTransformerFactory) SAXTransformerFactory.newInstance();
//获取SAX生成处理者对象实例TransformerHandlertransformerHandler=saxTransformerFactory.newTransformerHandler();
transformerHandler.setResult(resultXML);
//获取SAX生成器Transformertransformer=transformerHandler.getTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // 允许有空格//生成文档的开始transformerHandler.startDocument();
AttributesImplattrImpl=newAttributesImpl(); // 设置属性transformerHandler.startElement("", "", "书籍列表", attrImpl);
//第一本书transformerHandler.startElement("", "", "计算机书籍", attrImpl);
transformerHandler.startElement("", "", "书名", attrImpl);
transformerHandler.characters("Java思想".toCharArray(), 0, "Java思想".length());
transformerHandler.endElement("", "", "书名");
transformerHandler.startElement("", "", "作者", attrImpl);
transformerHandler.characters("小王".toCharArray(), 0, "小王".length());
transformerHandler.endElement("", "", "作者");
transformerHandler.startElement("", "", "价格", attrImpl);
transformerHandler.characters("79.00".toCharArray(), 0, "79.00".length());
transformerHandler.endElement("", "", "价格");
transformerHandler.endElement("", "", "计算机书籍");
//第二本书transformerHandler.startElement("", "", "计算机书籍", attrImpl);
transformerHandler.startElement("", "", "书名", attrImpl);
transformerHandler.characters("Spring指南".toCharArray(), 0, "Spring指南".length());
transformerHandler.endElement("", "", "书名");
transformerHandler.startElement("", "", "作者", attrImpl);
transformerHandler.characters("小李".toCharArray(), 0, "小李".length());
transformerHandler.endElement("", "", "作者");
transformerHandler.startElement("", "", "价格", attrImpl);
transformerHandler.characters("89.00".toCharArray(), 0, "89.00".length());
transformerHandler.endElement("", "", "价格");
transformerHandler.endElement("", "", "计算机书籍");
transformerHandler.endElement("", "", "书籍列表");
//生成文档的结束transformerHandler.endDocument();
System.out.println("XML文档生成成功!");
    }
}
Console:
XML文档生成成功!
File:
<?xmlversion="1.0"encoding="UTF-8"?><书籍列表><计算机书籍><书名>Java思想</书名><作者>小王</作者><价格>79.00</价格></计算机书籍><计算机书籍><书名>Spring指南</书名><作者>小李</作者><价格>89.00</价格></计算机书籍></书籍列表>

12.XML文件解析 parse 方法详解

image.pngimage.png

13.待更新...

目录
相关文章
|
XML 存储 设计模式
XML系列(三)之 XML建模
XML系列(三)之 XML建模
|
8天前
|
XML JavaScript 数据格式
XML 相关技术
XML 相关技术
|
1月前
|
XML 存储 JavaScript
|
3月前
|
XML 存储 JavaScript
xml介绍与解析,及xml库包使用
xml介绍与解析,及xml库包使用
34 0
|
6月前
|
XML 存储 数据格式
xml简介
xml简介
37 0
|
XML 存储 设计模式
XML的运用(XML建模)
XML建模是指使用对数据进行建模的过程。在XML建模中,使用XML描述数据结构和数据的关系,这些XML文档可以被解析器解析,从而允许数据被轻松地处理、传递和存储。XML建模是一种非常灵活的建模方法,它允许您为特定的数据创建自定义结构,以满足您的特定需求。其中最常用的建模方法是通过DTD(文档类型定义)或XML Schema(XML模式)来定义XML文档的结构。在XML建模中,也可以使用,将XML文档转换为关系模型,从而实现数据存储和查询。
|
XML 存储 JavaScript
XML入门一
XML入门一
71 0
|
XML 安全 JavaScript
xml-解析
xml-解析
68 0
|
XML 存储 JSON
【XML学习 一】XML基础
【XML学习 一】XML基础
148 0
|
XML 存储 数据格式