XML相关的几个定义
1. 数据定义 Schema、DTD
2. 数据解析 DOM和SAX
3. 样式风格:XSTL这是用来转化XML语言成HTML语言的
4. 实现语言Java、.Net和JavaScript
XML基本语法
1. 声明文档类型
要表达x<y
<condition> x < y </condition>
这样就不可以了
需要这样
<condition> x < y </condition>
只有小于号和大于号强制需要转义,其他推荐转义
如果转义的内容过多可以使用
创建XML文件对应的Document对象
DocumentBuilderFactory builderFactory = DocumentBuildFactory.newInstance();
//获取factory
DocumentBuilder builder=builderFactory.newDocumentBuilder(); //获取builder
Document document=builder.parse(xmlFile); //解析为Document对象
- SAX
(1) DOM把整个XML文件映射为Document里的树状结构,也就是取得XML里的每个元素、属性、文本、注释,对于大XML文件会占用过多内存
(2) SAX对XML文档的解析会从XML文档开始位置进行解析,同时根据已经定义好的事件处理器,来决定当前所解析的部分(元素、属性、内容)是否有必要记录并储存
(3) SAX解析方式
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse(xmlFile, new MySaxHandler());
需要自己写一个处理监听器
10. JAXB映射
(1) 工作原理
(2) Java对象转xml(marshal)
1. 先通过映射的类创建JAXBContext对象
JAXBContext context=JAXBContext.newInstance(Article.class); //Article就是我建的POJO(Plain Ordinary Java Object)
2. 然后通过JAXBContext对象的createMarshaller()方法创建一个对象
Marshaller m=context.createMarshaller();
3. 调用marshaller对象的方法marshal(Object obj,File output)把文件输出
m.marshal(article,xmlFile);
(3) XML文件转Java对象(unmarshal)
- 先通过映射的类创建JAXBContext对象
JAXBContext context=JAXBContext.newInstance(Article.class); //Article就是我建的POJO(Plain Ordinary Java Object)
- 然后通过JAXBContext对象的createUnmarshaller()方法创建一个对象
Unmarshaller u=context.createUnmarshaller(); - 最后将XML数据转换为对应的类,转换后需要强制转化成映射的类
Article article= (Article)u.unmarshal(xmlFile);
JAXBContext context;
try{
context=JAXBContext.newInstance(Article.class);
Unmarshaller u=context.createUnmarshaller();
Article article=(Article)u.unmarshal(xmlFile);
System.out.println(article.getTitle());
} catch(JAXBException e){
e.printStackTrace();
}
(4) 更加复杂的映射
1. 如果XML根元素不想使用默认的类名来表示,可以设置@XmlRootElement(name=”articles”)
2. 当根元素下有多个相同的子元素时,可以通过在类中使用List来表示
List<Article> article = new ArrayList<Article>();
本文介绍了XML的基础概念,包括数据定义、解析方法、样式转换及实现语言等,并深入探讨了DOM与SAX两种解析方式的区别,以及JAXB如何用于Java对象与XML之间的相互转换。
445

被折叠的 条评论
为什么被折叠?



