搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
weixin_40725706
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
HarmonyOS/OpenHarmony应用开发-HDC环境变量设置_hdc环境变量配置
2
RabbitMQ的远程Web管理与监控工具_mqviewer
3
cocos2dx lua中异步加载网络图片,可用于显示微信头像
4
分享一个好用的AI 动漫图片工具 - AI Anime Generator,输入文字,1分钟生成动漫图片_AI绘画工具
5
error pulling image configuration: Get https://registry-1.docker.io/v2/library/redis/blobs/sha256:7e_github error pulling image configuration
6
速盾:如何评估 CDN 对网络安全的影响?
7
springboot引入kafka
8
RabbitMQ的Windows版安装教程_windows安装rabbitmq
9
TON区块链之Hello World_ton钱包 连接 api
10
idea 把一个git分支的部分提交记录合并到当前分支上比较两个分支的代码区别_idea将其它分支上的部分合并到当前分支
当前位置:
article
> 正文
Java核心编程十一:XML处理_javax.xml.transform
作者:weixin_40725706 | 2024-07-13 04:20:40
赞
踩
javax.xml.transform
0 XML基础
正确的XML分为两类,一类是well-formed,一类是validating的。前者是只要符合XML语法即可,而后者还需要满足DTD或Schema的定义。
这里只介绍well-formed的XML的格式要求。
a XML的第一行必须是声明,其中包含版本和文档体的字符编码。
b XML中只能有一个根元素。
c 标记必须正确地关闭。
d 标记可以嵌套,但不能交叉。
e 属性必须用""括起来。
f 控制标记、指令和属性名称区分大小写。
g 不需要解释的字符串放在CDATA块中
h 空白与html处理不同
1 XML的解析
在javax.xml.*众多包中提供了担任XML的一些工具类。
在org.w3c.*众多包中提供了DOM模型的抽象及各种操作。
而org.xml.sax则提供了使用sax处理的接口。
下图是Dom模型中提供的各种对象。
因此,要解析XML文档,只需要使用解析器获得到DOM对象后,即可进行各种遍历操作。
javax.xml.parsers.DocumentBuilderFactory类
static DocumentBuilderFactory newInstance() 实例化方法
DocumentBuilder newDocumentBuilder() 获取文档解析器对象
javax.xml.parsers.DocumentBuilder
Document parse(File f)
Document parse(String url)
Document parse(InputStream in)
org.w3c.dom.Document接口
Element getDocumentElement() 获取根结点元素
org.w3c.dom.Element接口
String getTagName() 获取元素的标签名
String getAttribute(String name) 获取属性的值
org.w3c.dom.Node类
NodeList getChildNodes() 获取子结点的结点列表
Node getFirstChild() 获取第一个子结点
Node getLastChild()
Node getNextSibling() 获取下一个兄弟结点
Node getPreviousSibling()
Node getParentNode() 获取父亲结点
String getNodeName()
String getNodeValue() 获取结点值
NamedNodeMap getAttribute() 获取结点的属性集
NodeList类
int getLength() 获取长度
Node item(int idx) 获取指定索引的结点
NamedNodeMap类
int getLength() 获取长度
Node item(int idx) 获取指定索引的结点
2 XML验证
javax.xml.validation包提供了进行xml验证的工具。
3 XPATH
XPATH提供了一套自己的语言,以路径式的访问机制对DOM树进行遍历。
以/root/child/child1[exp]的形式访问节点值。
以/root/child/child1[exp]/@key的形式访问节点的属性。
以/root/child/comment() 获取child的注释
以/root/child/text() 获取child的text
XPATH表达式支持节点通配符,*可以匹配任意元素,@*可以配置任意属性节点
在[]中支持谓词扩展。具体可以查找XPATH的文档。
这种方式适合对于已知结构的XML文档进行信息提取,而SAX和DOM则更适合于对未知结构XML进行处理。
javax.xml.xpath包提供了使用xpath的相关类
javax.xml.xpath.XPathFactory类
static XPathFactory newInstance() 获取工厂实例
XPath newXpath() 工厂对象返回一个xpath对象
javax.xml.XPath类
String evaluate(String pattern,Source src) 从指定的输入源进行查找
String evaluate(String path,Object node) 从指定的结点,查找指定路径的值
Object evaluate(String path,Object node,QName resutType) 增加返回结果的类型,NODE / NODESET / STRING / NUMBER / BOOL等常量,如果类型为nodeset,则返回的实际类型为NodeList类型。
4 使用名字空间
javax.xml.parsers.DocumentBuilder
void setNamespaceAware(bool val) 设置是否打开命名空间
5 使用SAX
org.xml.sax中定义了使用SAX处理XML的接口。
ContentHandler接口类提供了使用SAX处理时必须定义的事件处理函数,如startElement/endElement,startDocument/endDocument,characters
类似于DOM解析,我们先通过工厂创建出解析器,再让解析器去处理文档
javax.xml.SAXParserFactory类
static SAXParserFactory newInstance()
SAXParser newSAXParser()
void setNamespaceAware(bool )
javax.xml.SAXParser
void parse(File f,DefaultHandler h)
void parse(String url,DefaultHandler h)
void parse(InputStream in,DefaultHandler h)
org.xml.sax.ContentHandler
void startDocument()
void endDocument()
void startElement(String ns,string lname,string fullname,Attribute att)
void endElement(String ns,string lname,string fullname)
void characters(char[] data,int start,int length)
org.xml.sax.Attributes类
int getLength()
String getLocalName(int idx)
String getValue(int idx)
String getValue(String key)
6 生成DOM
使用Dom模型提供的操作,可以创建一个完整的XML的DOM树。
javax.xml.Pareser.DocuementBuilder
Document newDocument()
org.w3c.dom.Document
Element createElement(String )
Text createTextNode(String)
org.w3c.dom.Node
Node appendChild(Node)
org.w3c.dom.Element
void setAttribute(String name,String val)
void setAttributeNS(String uri,String name,String val)
7 生成XML文档
当前输出成XML最好的方法是使用XSL转换器提供的transform方法。
其使用方法和解析器类似,先通过工厂获得转换器,然后设置转换器,将源转换为输出。
javax.xml.transform.TransformerFactory
static TransformerFactory newInstance()
Transformer newTransformer()
javax.xml.transform.Transformer
void setOutputProperty(String name,String value)
void transform(Source from,Result to)
有几个类从Source接口所继承,从Result接口继承
javax.xml.transform.dom.DOMSource/StreamSource
DOMSource(Node n) 从一个DOM结构初始构造
StreamSource(File f) 从一个文件构造
StreamSource(String url) 从一个URL地址构造
StreamSource(InputStream in) 从一个输入流构造
javax.xml.transform.stream.StreamResult/DOMResult
StreamResult(File f) 将结构写入到文件
StreamResult(OutputStream out) 写入到输出流
StreamResult(Writer writer) 写入到打字器
DOMResult(Document doc) 写入到DOM对象
8 使用XSLT
用于将XML转换成其他的如HTML的文本。转换方式是由XSLT文档来实现,这也是一个XML文件。因此和上节相比,增加的一点只是在初始化Transformer时,将xsl文档传递给它,其他代码是类似的。
9 XML绑定
JAXB提供了一种从普通对象和XML的互相转换的方式。JAXB提供了一系列的注解来说明类的成员如何对应XML元素,marshal接口用于将对象转换成XML,而unmarshal用于将XML转换成对象。
javax.xml.bind.JAXB类:提供一系列静态方法,用于对象与XML的相互转换
static void marshal(Object o,File f) 将对象转换成XML形式写入文件
static void marshal(Object o,OutputStream os) 写到输出流
static void marshal(Object o,Result r) 写入到转换后对象
static void marshal(Object o,String s) 写入到字符串
static void marshal(Object o,URL u) 向URL提交数据
static <T> T unmarshal(File f,Class<T> c) 从文件的XML重建对象
static <T> T unmarshal(InputStream is,Class<T> c) 从输入流的XML来重建对象
static <T> T unmarshal(Source src,Class<T> c) 从源XML来重建对象
static <T> T unmarshal(String s,Class<T> c) 从字符串来重建对象
static <T> T unmarshal(URL u,Class<T> c) 从指定URL链接来重建对象
javax.xml.bind.Marshaller与javax.xml.bind.Unmarshaller
接口提供的marshal与unmarshal与JAXB类的接口是类似的。
void setProperty(String key,String value) 设置转换控制的一些属性
unmarshal没有支持的属性,marshal支持如下属性:
String encoding
bool output
String schemaLocation
javax.xm..bind.JAXBContext
其所对应的XML文档如下
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
java
-
php
-
python
-
宠物
救助网站的设计与实现计算机
毕业设计
_
php
宠物
救助网站测试过程...
springboot基于springboot的学生社团管理系统的研究设计。
java
-
php
-
python
-
宠物
救助网站的...
赞
踩
article
基于微信
小
程序
电影推荐
系统
视频
播放器
系统
python+
java
+node.js+php...
电影
播放器
小
程序
能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知电影
播放器
小
程序
的便捷高效,不仅为群众提...
赞
踩
article
springboot/
java
/php/node/python
微信
小
程序
的
电影
推荐
系统
【计算机毕设】...
电影
推荐
系统
的实现对于用户而言,意味着更加个性化和智能化的观影体验。通过对用户历史观影数据的分析,结合用户评分、社交网络...
赞
踩
article
最小
矩阵
宽度【华为OD机试】(
JAVA
&Pytho
n
&C++&JS题解)_给定
一
个
矩阵
,
包含
n
*m
个
...
最小
矩阵
宽度【华为OD机试】(
JAVA
&Pytho
n
&C++&JS题解)给定
一
个
矩阵
,
包含
N*M
个
整数
,和
一
个
包含
K
个
整...
赞
踩
article
考勤
系统
设计与
实现
(JSP+
java
+springmvc+
mysql
+MyBatis)_
考勤
系统
的设...
随着企业规模的扩大和员工数量的增加,传统的手工记录
考勤
方式已经无法满足现代企业的需求。
系统
将采用现代化的技术手段,包括数...
赞
踩
article
2023计算机
毕业设计
-
电影
推荐
评分榜单查看
系统
springboot
-
JAVA
-
JAVA
(论文+开题...
网络
的
广泛应用给生活带来了十分
的
便利。所以把影片
推荐
管理与现在网络相结合,利用java技术建设影片
推荐
系统
,实现影片
推荐
...
赞
踩
article
Java
+
Swing
+
mysql
学生考勤
管理系统
(高分课程项目)_
java
mysql
swing...
该系统实现系统管理员:登陆、添加教务人员教务管理员:登陆、、添加学生信息、添加教师信息、查看考勤数据辅导员:登陆、、查看...
赞
踩
article
java
-jsp
基于
协同
过滤的
个性化
电影
推荐
系统
ud975
[独有源码]如何找到适合自己的毕业设计的指...
选题背景:随着互联网的快速发展和数字娱乐产业的兴起,人们对于
电影
的需求也越来越多样化。然而,在海量的
电影
资源面前,用户往...
赞
踩
article
微信
小
程序
java
ssm
电影
迷
爱好者
交流平台
_基于
微信
小
程序
的
电影
爱好者
交流平台
...
本设计分为用户和管理员两个角色,其中用户可以登陆
微信
端,查看
电影
信息,查看
电影
分类,对
电影
在线评论,留言反馈,修改个人资...
赞
踩
article
华为OD机试C卷--
字符串
比较
(
Java
& JS &
Python
)_(
c
卷
,
200分)- 字符...
给定
字符串
A、B和正整数V,A的长度与B的长度相等, 请计算A中满足如下条件的最大连续子串的长度: - 该连续子串在A和...
赞
踩
article
Java
线程
、
进程
_
java
进程
和
线程
...
1、什么是
进程
:process
进程
时操作系统中运行的一个任务(一个应用程序运行在一个
进程
中)。
进程
时一块包含了某些资源的...
赞
踩
article
【
JAVA
】
线程
和
进程
_
java
线程
和
进程
...
多
线程
是提升程序性能非常重要的一种方式,也是Java 编程中的一项重要技术。在程序设计中,多
线程
就是指一个应用程序中有多...
赞
踩
article
华为
OD机试C卷-- 最长子
字符串
的
长度
(二)(
Java
& JS &
Python
& C)_
华为
...
给你一个
字符串
s,
字符串
s 首尾相连成一个环形,请你在环中找出 'l'、'o'、'x' 字符都恰好出现了偶数次最长子...
赞
踩
article
华为
OD机试-
求
满足条件
的
最长
子串
的
长度
(Java/Python/C++)_只包含
字母
和数字,按要
求
...
华为
OD机试-
求
满足条件
的
最长
子串
的
长度
-
华为
OD机试-
求
满足条件
的
最长
子串
的
长度
:给定一个,只包含
字母
和数字,按要
求
找...
赞
踩
article
华为
O
D
机试统一考试
D
卷
C
卷
- 最长子
字符串
的长度(二)(C++
Java
Java
Script ...
华为
O
D
机试统一考试
D
卷
C
卷
- 最长子
字符串
的长度(二)(C++
Java
Java
Script
Python
) ...
赞
踩
article
【2023华为
od
-C卷-第三题-最长
字符串
的长度(二)】
100%
通过率
(
Java
Script&Ja...
意义上的加法就是异或操作,可以把(cntL[i]\ (m
od
\ 2), cntO[i]\ (m
od
\ 2), cntX[...
赞
踩
article
Hive
安装与
配置
实战指南_
hive
java
环境变量
...
通过按照本文的指导进行操作,您应该能够顺利地搭建起自己的
Hive
环境,并开始使用
Hive
进行数据分析和处理。当然,Hiv...
赞
踩
article
JAVA
命令
行
运行
java
项目
_
java
运行
命令
...
多年以来 一直使用的是IDE 来写
java
项目
,导致很多的最基础的东西都渐渐模糊了.最近遇到一个问题就是如果
命令
行来运...
赞
踩
article
【
小沐学
Java
】
VSCode
搭建
Java
开发
环境_
vscode
java
...
Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于 Windows、ma...
赞
踩
article
redis
java
hash
存储
对象
_
java
redis
存储
对象
使用
hash
并查询...
前言:
redis
缓存的
hash
数据类型可以让用户将多个key-value对存储到一个
redis
键里,适合用来存储
对象
。本...
赞
踩
相关标签
java
php
宠物
微信小程序
音视频
小程序
spring boot
矩阵
华为od
python
c++
mysql
mybatis
开发语言
课程设计
c语言
javascript