XML基本解析


XML;
是什么?
Extensible Markup Languare 可扩展标记型语言

为什么要有XML?
1.HTML的标签是固定的,不可以改变,也不可以进行一个···扩展
2.HTML语法松散

作用;
制作配置文件;如组件类。。。。。
存储数据;存储少量的数据

◆◆◆注;XML不是HTML的升级版,因为应用的领域不一样。
 XML是描写关系型的数据
 HTML是描述页面的数据显示效果

--------------------------------------------XML和HTML的区别--------------------------------------------------------------------

XML和HTML的区别;
A、HTML是将数据和显示的效果混合在一起,描述了数据的显示效果,
-----而且标签是固定,而且语法松散

B、XML是将数据和显示的效果是分离的,只是描述了数据之间的关系和存储的格式,
-----没有描述数据的显示效果,没有一套具体的标签,只是一个规范。

  XML适用金融,科学等有关系型的领域

  XML的重点是;处理数据,和数据结构
  
  
◆注;引入外部CSS文件,对XML标签进行一个修饰,
<>xml-stylesheet tyep = "text/css" href = "">  

--------------------------------------------XML的特点--------------------------------------------------------------------

XML特点;
1.语法严谨,区分大小写
2.标签名可以是中文
3.文件后缀是  .xml 
4.换行也是算一个元素
5.可以自定义标签
6.id不可以以数字开头

存储数据的方式;
* XML 存储关系型的数据
* properties 存储key,value的数据
* 文本   什么都可以存储
* 数据库   

 

 

--------------------------------------------XML的语法--------------------------------------------------------------------

 

 

 

XML语法;
1.文档声明 Document declaration;
             版本             编码集           是否与其他文件关联
   <?xml vaersion = "1.0" encoding = "编码集" standalone = "no默认" ?>
   
2.元素 Element;
1.自定义标签;建议标签名全部小写,保持与HTML的书写习惯,
因为出现同名的大小写不便于阅读
2.成对出现
3.闭合标签和结束体标签
4.符合逻辑嵌套

3.属性 Attribute;
1.属性名小写,属性也是可以自定义的,
2.属性值要使用 "" 或 '',id不可以以数字开头
3.多个属性要使用 空格 隔开 
4.可以将属性作为一个子标签,因为XML用途不是用于显示页面的

4.注释 Comment;
1.<!-- --> 和HTML一样
2.注释不可以嵌套

5.CDATA;
1.XML的转义字符基本和HTML一致。
2.如果需要转义的字符太多了则可以使 CDATA
3.CDATA可以将一段字符串原样的输出

<![CDATA[字符串]]>

6.处理指令;
1.处理指令时告知解析引擎是要如何处理文档的。
2.处理指令必须使用 <? ?>

<?xml-stylesheet type = "text/css" href = "路径"> 

◆注;
    1.XML必须要有一个根节点
    2.XML不会在页面显示
    3.缩进写法适合阅读
      
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 文件结构↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■    

◆◆◆注; XML文档必须要有一个根节点◆◆◆     
    
XML文件结构;
    Node
    |--- Element
    |--- Attr
    |--- Comment
    |--- Text
    |--- Document
   
        
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■    
    
    
xml解析;
为什么要有?
因为XML主要是用于存储数据,做配置文件.......
那么XML的数据的···取出···可以通过解析技术可以实现.....

而读取XML文件;
1.IO  ---- 读取出来的数据不是理想的数据。
2.DOM解析  ---- DOM4J 是一个开源的解析技术
3.SAX解析  ---- SAX 是SUN公司定义的,比较规范,SAX里面也是有使用了DOM4J的技术

解析技术;
1.DOM4J  是一个开源组织的
2.JAXP   是SUN公司定义的
    |-- DOM
    |-- SAX
    
    
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓DOM—— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
   
DOM解析;
特点;1.是一次性装载这个文件到内存中,不利于大文件存取操作,
     2.适合增删改查,因为一次是整个文件加载,无需在到硬盘对文件中的内容一个一个去查找
     3.在内存中是一棵倒挂的树
     4.DOM是解析XML的底层接口之一
     5.是W3C定义的
     6.DOM是一个规范,而DOM4J是一个实现了这个规范的解析技术
     
DOM4J;
1.是DOM解析的一个实现解析技术(如同实现类)
2.特点和DOM一样,也是一棵倒立的树型形状。
3.不是W3C定义的,是一个开源团队发布的

DOM4J;也是一个组件,而这个组件也是需要下载的,

-----------------------------------------------DOM4J获取XML文件的方式--------------------------------------------------------------------

◆◆◆注;注意导包的路径。

DOM4J获取文件的三种方式;
1.通过解析器的方法传入一个绝对路径

a.创建解析器
★ SAXReader sr = new SAXReader();

b.调用解析器的read方法获取XML文档,使用文档对象接收

★ Document doc = sr.read("绝对路径");

2.通过解析器的方法传入一个相对路径

a.创建解析器
★ SAXReader sr = new SAXReader();

b.调用解析器的read()方法,获取到XML文档,使用文档对象接收

★ Document doc = sr.read("相对路径");

3.通过类的getResourceAsStream("/文件名")方法

a.通过运行时类的对象的getResourceAsStream()的方法
---获取到这个XML文档的流

★InputStream is =  类名.class.getResourceStream("/文件名");

b.创建解析器
★ SAXReader sr = new SAXReader();

c.调用解析器的read()方法传入获取到的XML文件流,使用文档对象接收

★ Document doc = sr.read(is);

------------------------------------------DOM4J获取XML文件的元素方法--------------------------------------------------------------------

◆◆◆注;必须要先获取到根节点,在根据根节点获取到其他节点 ◆◆◆

DOM4J获取元素方法;  --- 使用Element Object调用

1.getRootElement() 获取到根节点

2.elements(写/没写)           只能写子标签,不可以写孙标签
  没写;获取到所有的子标签标签  返回的是一个集合
  写了;获取到指定标签名的所有标签

3.getName();    获取到标签名
4.elementText() 获取到标签的内容
5.element()     获取到指定标签
6.elementById() 获取到指定的Id标签
7.elementIterator() 获取到标签迭代器
8.getQName()   获取到标签名

获取属性的方法;----使用 Element Object调用

1.attributeValue()  获取到指定的属性的值
2.attirbutes()    获取到所有的属性

添加的方法;----使用 Element Object 调用

1.addElement() 添加元素
2.addAttribute() 添加属性
3.addCDATA()  添加CDATA
4.addText()  添加标签内容

直接删除元素方法;使用获取到的元素对象,
  ◆ 调用detach()方法可以删除这个元素和这个元素的所有子元素。
  
如;element.detach()

------------------------------------------DOM4J刷新文件--------------------------------------------------------------------

DOM4J刷新文件;
1.声明文件内容的写入格式。
a.缩进格式;
   OutputFormat of = OutputFormat.createPrettyPrint();
   
b.行内格式;
   OutputFormat of = OutputFormat.createCompactFormat();

2.创建写入器
XMLWriter writer = new XMLWriter("FileStream_Path","OutputFormat_Obj");

3.调用写入器的方法写入重写写入文件
writer.write("Document_Obj");

◆注;
1.将获取到的XML文档对象的内容转换成一个字符串
 String Document.asXML();

2.将字符串转换成一个XML文档对象
  Document.DocumentHanper.parseText("String_Obj");
  
------------------------------------------DOM4J创建 --> 写入过程--------------------------------------------------------------------
  
     ◆◆◆注意导包◆◆◆

1.创建解析器对象;
SAXReader reader = new SAXReader()

2.调用解析器方法获取到XML文档;
Document doc = reader.read("String_Path");

3.获取到根路径;
Element doc.getRootElement();

    ---4.1;将获取到的文档对象转换成字符串
String doc.asXML();

    ---4.2;将字符串解析成一个XML文档对象
Document DocumnetHanper.parseText("String");

5.规定写入XML文件的格式;
1.OutputFormat of = OutputFormat.createPattryPrint(); --- 缩进格式
2.OutputFormat of = OutputFormat.createCompactFormat(); --- 行内格式

6.创建写入器;
XMLWriter writer = new XMLWriter("FileStream_Path",OutputFormat);

7.调用写入器的写入XML文件的方法;
writer.wirte(Document);

8.关闭流;
writer.close();

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓Xpath—— 查询表达式↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Xpath;
为什么要有?
在DOM4J中加载文件时,直接加载整个文件到内存中的,不便于获取某一个指定的节点。

什么是Xpath?
    1、是一个查询表达式语言,也是一个开源的语言
    2、在DOM4J中融合了这个Xpath这个查询表达式语言
    3、这个语言也是一个组件来的,但是在DOM4J组件中已经附带了
dom4J --- lib --- jaxen-1.1-beta-6.jar

  作用;
  可以通过Xpath表达式快速定位到某一个XML文件的节点。
 

------------------------------------------Xpath—— 表达式符号 --------------------------------------------------------------------

表达式符号;
  //x    相对定位到某节点
  /x     绝对定位绝对定位到某一个节点
  /*     是所有节点
 [num]   第N个节点
 [@x]  选中到某一个属性
 normalize-span 去空格
 [text()]  获取到内容
   
------------------------------------------Xpath—— 使用 --------------------------------------------------------------------

Xpath的使用;
DOM4J的selectNodes("表达式"); 方法
DOM4J的selectSingleNode("表达式");  方法

Document .selectNodes() ------  是返回所有节点的集合
Document .selectSingleNode("表达式")  ----- 返回某一个具体的节点

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

JAXP解析技术;
是Sun公司开发的,是XML文档解析技术的一个集合统称。

包含;
DOM解析
一次性读取整个文件到内存中。

SAX解析
读取一行,解析一行,处理一行。

这2项解析技术都是由SUN公司制定的,较规范

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——SAX —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

SAX解析技术;
为什么要有?
1.DOM4J不适合大文件的读取,因为一次性加载整个文件。

是什么?
1.Simple API For XML 简单的解析XML文档API,是由SUN公司定义的一个解析技术,较规范。
2.也是融合了DOM4J的部分技术。

作用;
用于解析XML文档的一个解析技术

特点;
一次读取一行,解析一行,处理一行。

适合大文件的存取,不适合增删改查。

◆注;由于是SUN公司开发的,而在Eclipse或MyEclipse中已经有了组件。

◆◆◆◆◆注;SAX解析主要是用于查询,一般都不使用写入操作,因为一般的XML文件都不会太大

-----------------------------------------SAX获取XML文件的方式--------------------------------------------------------------------


SAX获取XML文件的方式;
    只有 2 种,传入的字符串是···绝对路径···或···相对路径···

-----------------------------------------SAX获取XML文件的流程 --------------------------------------------------------------------
    
SAX获取XML文件的流程;
因为是SUN公司定义的所以也较规范,也定义了获取XML文件的流程

    1.获取到解析器工厂对象
    SAXParserFactory spf = SAXParserFactory.newInstance();
   
    2.通过解析器工厂对象获取到具体的解析器对象
    SAXParser sp = spf.newSAXParser();
   
    3.通过具体的解析器对象,获取到读取器
    XMLReader reader = sp.getXMLReader()
   
    4.通过调用读取器的setContentHandler(obj)方法设置事件处理
    reader.setContentHandler(obj);
   
    5.调用读取器的解析方法,解析XML文件
    reader.parse("绝对路径/相对路径");
   
     
◆注;具体的事件处理在继承事件处理接口·下·的具体实现类,的类中定义
   
事件处理;    
 在SAX中引入了一个事件处理的概念,是用于对文件的内容进行的处理。

1.在调用解析文件parse()的方法,时会触发事件处理方法中的对象的···主要三个方法···
 
2.而事件处理ContenHandler是一个接口,
如果实现这个了接口则需要实现这个接口的所有方法
所以可以实现这个接口的具体的实现类。

主要三个方法;
startElement(String uri, String localName, String qName,
     Attributes attributes)       ----- 获取到开始标签
     
characters(char[] ch, int start, int length) ----- 获取到标签内容

endElement(String uri, String localName, String qName)
    ----- 获取到结束标签
    
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——DOM —— 解析技术↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

JAXP-DOM解析技术;
为什么要有?
1.在SUN公司定义了一个SAX解析,而这个解析的特点是,每次读取一行,
而不便于增删改。。。。。
2.而不用DOM4J,因为如果是使用SUN公司定义的标准较规范,

3.使得代码便于阅读,因为在阅读是不必查看是使用什么技术。。。。。

4.在未来的开发中统一使用SUN公司的技术,可以使得兼容性问题的风险降低。。

是什么?
JAXP-DOM解析技术是由SUN公司开发的,里面融合了DOM4J的部分技术

作用;
可以用于解析XML文档。

特点;
1.一次性加载整个XML文档到内存中。
2.不适合大的文档存取,适合增删改查
3.也是一个倒立的树型结构。

4.也是遵循DOM规范的。

------------------------------ JAXP——DOM —— 创建->获取XML文档流程 -------------------------------------------------------------------

Jaxp-DOM创建流程;
1.获取到Jaxp_DOM解析工厂对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

2.通过解析工厂对象获取到具体的解析器对象
DomcumentBuilder db = dbf.newDocumentBuilder();

3.通过解析器的解析XML文档的方法获取到XML文档
Document doc = db.parse("绝对路径/相对路径")

操作文档元素的方法;
参考;Java_API ---> Document对象,中的方法
  和DOM4J/SAX类似

◆◆◆注;不可以使用通过类名获取到文件输入流对象

  Node n = doc.getElementsByTagName("节点名")[num];

-------------------------------- JAXP——DOM —— 创建->写入XML文档流程 --------------------------------------------------------------------

JAXP-DOM创建-写入;
 1.获取到JAXP-DOM解析工厂接口对象
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 
 2.通过解析工厂的对象获取到具体的解析器对象
  DocumentBuilder bd = dbf.newDocumentBuilder();
 
 3.使用解析器对象的parse()方法,获取到XML文档的对象
  Document doc = bd.parse(绝对路径/相对路径);
 
 4.1.在JAXP-DOM的中加入了插入的insertBefore();的方法
  a.创建节点
  Element_Obj.createElement("结点名");
 
  b.获取到参考节点
 
  c.获取到某一个节点(父节点)
  Element ele = doc.getDocumentElement();
 
  d.通过父节点插入某一个节点
  ele.insertBefore(插入的节点,参考节点);

5.创建写入工厂对象 【transformer 转换模型】
TransformerFactory tff = TransformerFactory.newInstance();

6.通过工厂对象获取到具体的写入对象
Transformer tf = tff.newTransformer();

   <------
7.调用写入对象的write方法写入
   ▲--> tf.write(new DOMSource("源文件路径"),new StreamResult(new FileOutputStream("目标路径")));


◆◆◆注;
1.new DOMSource() 是一个类,而这个类可以关联要转换的Document对象
2.new StreamResult() 是一个类,可以表示数据写出的目的地。
 
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ XML —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

XML约束;
为什么要有?
在XML文档中的标签可以随意定义,使得文档不规范,
也避免用户输入有误,提高用户的体验性。

如;在描述人职业的XML文档中,用户不小心写错了或有人故意破坏,写了个动物标签。


什么是XML约束?
规定(规范)XML文档的书写格式。

作用;
使得文档变得规范,便于阅读,提高用户的体验性。

主流约束;
DTD
   是一个控制不是很精准的一个约束技术
   文件后缀是 .dtd
   
Scheme
   是一个控制精准的一个约束技术,逐步的取代DTD
   文件后缀是 .xsd

◆◆◆注;叫是叫Scheme而在书写scheme约束文档时是写schema
----因为Schema的意思更加具体。

  schema :模式,计划
  scheme :计划,策划,体制

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ DTD —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  
  
DTD约束;
是什么?
Document Type Definition 文档类型定义

作用;
用于规定(规范)一个XML文档的书写格式

特点;
对文档的内容控制不够精准是,如做不到内容的控制等。

--------------------------------------------DTD文档定义 --------------------------------------------------------------------

 
DTD文档定义;
1.常用的数据类型;
(#PCDATA) 可变长度的字符串
EMPTY   空类型  【一般用于定义闭合标签】
ANY 任意类型 

2.常用的定义符号;
? 0或1
+ 1或N
* 0或N
() 必须出现 1次


3.常用的定义元素的关键字;
 ELEMENT   定义元素
 ATTLIST   定义元素的属性

 
  ◆注;
 1.都是大写  
 2.一个标签名可以同时使用2个,
 因为;ELMENT是定义元素
       ATTLIST   是定义元素的属性 
       
4.定义属性常用的关键字;
1.#REQUIRED 必须给这个标签定义该属性
2.#IMPLIED  这个属性可写可不写
3.#Fixed    给这个属性定义一个固定值

--------------------------------------------DTD文档引入方式 --------------------------------------------------------------------

DTD文档引入方式;
1.外部引入;
     <!DOCTYPE 根名 SYSTEM "文件名"> 

2.内部定义;
   <!DOCTYPE 根名[
  <!ELEMENT 根名(子标签)>
  <!ELEMENT 子 (#PCDATA)>
   ]>

3.外部引入;key --- value
   <!DOCTYPE 根名 PUBLIC "名称空间【唯一】"  "文件名">
   
--------------------------------------------DTD文档定义 --------------------------------------------------------------------


1.文件后缀是DTD

<!ELEMENT 书名 (作者+,价格?)>
<!ElEMENT 作者 (#PCDATA)>
<!ATTLIST 作者 titile CDATA #IMPLIED>
<!ELEMENT 价格 (#PCDATA)>

2.DTD文件没有注释

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ Scheme —— 约束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Scheme约束;
  为什么要有?
  1.DTD约束对XML的格式控制不够精准
  2.使得用户可选择性更多,因为Scheme也比较麻烦
 
 
 是什么?
  Scheme;体制,策划
   
 作用;
  规范(规定)XML的文档书写格式
 
 为什么说Scheme控制更加精准?
  1.可选择规定的内容类型更多
  2.内容类型的控制
  3.内容的规定
 特点;
  1.文件后缀是.xsd
  2.scheme文件的也是属于一个XML文件,因为声明处与XML一样
  3.文件的根节点一定是【schema】 
 
      ◆◆◆注;不要写成scheme ,
      scheme 是策划,计划,体制
      schema 是 计划,模式
 
--------------------------------------------Scheme文档定义 --------------------------------------------------------------------


Scheme文档定义;
1.可以指定一个自定义名

2.xmlns 的W3C域名是固定的格式,不可以改变
 
  3.targetNamespace 域名名称空间可以自定义,但是是要求唯一的
 
  4.elementFormDefault 是固定的格式
 
  5.根标签一定要是 【schema】
 
 
常用关键字解析;
sequence 序列;
是指定约束XML文件定义节点时
按照一个什么顺序进行一个定义
 
  complextype 复杂类型;
      是在xsd文档声明这个节点下有子节点。
      
name;
是标签名
type;
是标签内容类型

★注;type如果设置成数值型(double,decimal....)的,一般都是要显示的赋值


常见的单词
  Ocuurs 重视的意思
  decimal 小数

--------------------------------------------Scheme文档开头解析 --------------------------------------------------------------------

xs是自定义的一个标识符
名称空间是一个key,保证唯一性用于约束XML文档时,XML文档找到这个文档

<?xml version = "1.0" encoding = "UTD-8">                 ----- 指定文档类型
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"  ----- 固定的格式
  
  targetNamespace = "自定义"                     ----- 自定义域名,用于标识,
   |====一般是域名,保证在网络上的唯一性
  
  elementFormDefault = "qualified"               ----- 固定格式,qualified;合格
>

</xs:schema>
 
----------------------------------XML文档 —— 引用 —— Scheme文档 --------------------------------------------------------------------

1.my ----- 是自定义的一个名字,可以用于在引入多个约束文件时,可以区分

2.xis ----- 是自定义的,也是可以用于在引入多个约束文件时区分,

3.xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"  
----- 是固定格式

4.xis:schemaLacation ----- 引入一个本地的文件,通过使用 名称空间 + 文件名 指定 key + value 

<my:schema 【根名】 xmlns:my = "scheme文档的名称空间值"
   xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"
   xis:schemaLacation = "scheme文档名称空间 文件名"
>
 

</my:scheme>

 

 

     
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用Java开发的项目,我们经常使用Jackson和XML解析器来处理JSON和XML数据。 Jackson是一个流行的Java库,用于将JSON数据与Java对象之间进行转换。它提供了一组简单易用的API,可以将JSON字符串转换为Java对象,或将Java对象转换为JSON字符串。Jackson还提供了一些高级功能,例如对日期、枚举和多态类型的支持。 在使用Jackson时,你需要添加相应的依赖到你的项目中。例如使用Maven构建项目,你可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.1</version> </dependency> ``` 使用Jackson解析JSON数据的基本步骤如下: 1. 创建一个`ObjectMapper`对象,它是Jackson库的核心类,用于执行JSON序列化和反序列化操作。 2. 调用`readValue()`方法将JSON字符串转换为Java对象,或调用`writeValueAsString()`方法将Java对象转换为JSON字符串。 下面是一个使用Jackson解析JSON的示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JsonParser { public static void main(String[] args) { String json = "{\"name\":\"John\",\"age\":30}"; try { ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(json, Person.class); System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); } catch (Exception e) { e.printStackTrace(); } } } class Person { private String name; private int age; // getters and setters } ``` 在上述示例中,我们将一个JSON字符串`{"name":"John","age":30}`转换为一个名为`Person`的Java对象,然后输出对象的属性值。 对于XML解析Java提供了多种选择,例如DOM、SAX和StAX等。其中,DOM和SAX是最常用的两种方式。 DOM解析器将整个XML文档加载到内存中,以树形结构表示,可以进行随机访问和修改。而SAX解析器则是基于事件驱动的,逐行解析XML文档,适用于处理大型XML文件。 如果你更喜欢使用DOM解析器,可以使用Java内置的`javax.xml.parsers.DocumentBuilder`类。如果更喜欢SAX解析器,可以使用`org.xml.sax.helpers.DefaultHandler`类。 以下是一个使用DOM解析解析XML的示例代码: ```java import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class XmlParser { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("data.xml"); Element root = document.getDocumentElement(); NodeList nodeList = root.getElementsByTagName("book"); for (int i = 0; i < nodeList.getLength(); i++) { Element book = (Element) nodeList.item(i); String title = book.getElementsByTagName("title").item(0).getTextContent(); String author = book.getElementsByTagName("author").item(0).getTextContent(); System.out.println("Title: " + title); System.out.println("Author: " + author); } } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述示例中,我们使用DOM解析解析名为`data.xml`的XML文件。然后,我们根据XML的标签结构提取了书籍的标题和作者信息,并进行了输出。 希望这些示例代码可以帮助你开始使用Jackson和XML解析器进行JSON和XML数据的处理。如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值