Java.Web学习笔记 XML

本文介绍了XML的基础概念,包括数据定义、解析方法、样式转换及实现语言等,并深入探讨了DOM与SAX两种解析方式的区别,以及JAXB如何用于Java对象与XML之间的相互转换。

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 &lt; y </condition>

只有小于号和大于号强制需要转义,其他推荐转义

如果转义的内容过多可以使用

创建XML文件对应的Document对象
DocumentBuilderFactory builderFactory = DocumentBuildFactory.newInstance(); 
 //获取factory
DocumentBuilder builder=builderFactory.newDocumentBuilder();  //获取builder
Document document=builder.parse(xmlFile);  //解析为Document对象
  1. 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)

  1. 先通过映射的类创建JAXBContext对象
JAXBContext context=JAXBContext.newInstance(Article.class); //Article就是我建的POJOPlain Ordinary Java Object
  1. 然后通过JAXBContext对象的createUnmarshaller()方法创建一个对象
    Unmarshaller u=context.createUnmarshaller();
  2. 最后将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>();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值