美文网首页
5、Groovy创建XML与解析XML实现

5、Groovy创建XML与解析XML实现

作者: 爱学习的蹭蹭 | 来源:发表于2021-12-23 17:12 被阅读0次

1、book.xml文件结构

<?xml version="1.0" encoding="UTF-8" ?>
<Books>
    <Book id="1">
        <title>Kotlin入门到实战</title>
        <author>周伯通</author>
    </Book>
    <Book id="2">
        <title>Groovy入门到实战</title>
        <author>杨过</author>
    </Book>
    <Book id="3">
        <title>Scala入门到实战</title>
        <author>小龙女</author>
    </Book>
    <Book id="4">
        <title>Java入门到实战</title>
        <author>郭靖</author>
    </Book>
    <Book id="5">
        <title>Swift入门到精通</title>
        <author>洪七公</author>
    </Book>
</Books>

2、代码实现

  • 此代码可以创建一个XmlTest类即可,Books与Book都是在XmlTest类,此类为了方便阅读,不创建多个类进行实现,由于代码较少。这里提供了2种创建xml的实现,与一种解析xml的实现
package com.groovy.domain

import groovy.xml.MarkupBuilder
import groovy.xml.XmlSlurper
import org.junit.Test

//Books对象
class Books {
    int count = 5
    def books = [
            new Book(id: System.currentTimeMillis(),title: "Kotlin入门到实战", author: "周伯通"),
            new Book(id: System.currentTimeMillis(),title: "Swift入门到实战", author: "杨过"),
            new Book(id: System.currentTimeMillis(),title: "Groovy入门到实战", author: "小龙女"),
            new Book(id: System.currentTimeMillis(),title: "Scala入门到实战", author: "郭靖"),
            new Book(id: System.currentTimeMillis(),title: "Java入门到实战", author: "瑛姑")
    ]
}

//Book对象
class Book {
    Long id
    String title
    String author
}

class XmlTest {

    @Test
    void createXmlObject() {

        def sw = new StringWriter()
        def markupBuilder = new MarkupBuilder(sw)
        def books = new Books()

        //创建一个Books节点
        markupBuilder.Books(count: books.count) {
            //获取books数据进行遍历
            books.books.forEach { book ->
                //获取book数据,创建一个Book节点
                Book(id:book.id,title: book.title, author: book.author)
            }
        }
        println(sw)
    }

    @Test
    void createXml() {

        def sw = new StringWriter()
        def markupBuilder = new MarkupBuilder(sw)
        //对Books节点添加一个count属性值为5
        markupBuilder.Books(count: 5) {
            //在Books创建Book节点,并且给一个id为1的值
            //在book节点下创建title与author节点
            Book(id: 1) {
                title("Kotlin入门到实战")
                author("周伯通")
            }
            Book(id: 2) {
                title("Java入门到实战")
                author("杨过")
            }
            Book(id: 3) {
                title("Groovy入门到实战")
                author("小龙女")
            }
            Book(id: 4) {
                title("Scala入门到实战")
                author("瑛姑")
            }
            Book(id: 5) {
                title("Swift入门到实战")
                author("郭靖")
            }
        }
        println(sw)
    }


    @Test
    void parseXml() {

        //获取xml文件路径
        def path = XmlTest.class.getClassLoader().getResource("book.xml").path

        //指定文件路径,指定解析编码进行获内容信息
        def content = new File(path).getText("utf-8")

        //创建XmlSlurper对象
        def xmlSlurper = new XmlSlurper()
        //解析内容信息,获取book节点
        def books = xmlSlurper.parseText(content)
        // println(books.Book[0].@id)
        //获取多个Book节点
        books.Book.forEach { book ->
            //使用GPathResult节点路径去获取id值
            println("Id=${book.@id},书名称=${book.title},书作者=${book.author}")
        }
    }

}

3、createXmlObject方法运行的结果

<Books count='5'>
  <Book id='1638084704535' title='Kotlin入门到实战' author='周伯通' />
  <Book id='1638084704559' title='Swift入门到实战' author='杨过' />
  <Book id='1638084704559' title='Groovy入门到实战' author='小龙女' />
  <Book id='1638084704560' title='Scala入门到实战' author='郭靖' />
  <Book id='1638084704560' title='Java入门到实战' author='瑛姑' />
</Books>

4、createXml方法运行的结果

<Books count='5'>
  <Book id='1'>
    <title>Kotlin入门到实战</title>
    <author>周伯通</author>
  </Book>
  <Book id='2'>
    <title>Java入门到实战</title>
    <author>杨过</author>
  </Book>
  <Book id='3'>
    <title>Groovy入门到实战</title>
    <author>小龙女</author>
  </Book>
  <Book id='4'>
    <title>Scala入门到实战</title>
    <author>瑛姑</author>
  </Book>
  <Book id='5'>
    <title>Swift入门到实战</title>
    <author>郭靖</author>
  </Book>
</Books>

5、parseXml方法运行的结果

Id=1,书名称=Kotlin入门到实战,书作者=周伯通
Id=2,书名称=Groovy入门到实战,书作者=杨过
Id=3,书名称=Scala入门到实战,书作者=小龙女
Id=4,书名称=Java入门到实战,书作者=郭靖
Id=5,书名称=Swift入门到精通,书作者=洪七公

相关文章

  • 5、Groovy创建XML与解析XML实现

    1、book.xml文件结构 2、代码实现 此代码可以创建一个XmlTest类即可,Books与Book都是在Xm...

  • 五、Groovy语法(五)json、xml解析

    Groovy数据解析 一、json解析 请求网络数据并解析 二、xml解析 groovy解析xml数据 groov...

  • 第八章.处理XML

    一、解析XML groovy简化了java解析XML(点此查看)的痛苦。 首先建立一个XML文件作为解析对象: <...

  • Python 操作 DOM(待更)

    XML 简介 xml.etree.ElementTree 模块实现了一个简单高效的API,用于解析和创建XML数据...

  • spring中一些常用的注解

    前言 | spring提供使用 xml、注解、java配置、groovy配置实现bean的创建和注入 spring...

  • grails/groovy创建xml

    importgroovy.xml.MarkupBuilder classTest { static void...

  • ajax中xml和json

    一、DOM解析XML字符串 创建DOM解析XML的解析器,解析器解析XML字符串IE浏览器var parser =...

  • JS—JSON

    JSON与XML都是结构化数据的表现方式。回忆一下XML,1、创建xml 文档对象,用来存放加载xml文档,或解析...

  • Java XML文件解析书目录

    Java创建XML文件 解析XML文件-Java DOM Java 修改XML文件的节点和属性 XML文档中节点、...

  • XML

    XML使用讲解 解析案例 创建案例

网友评论

      本文标题:5、Groovy创建XML与解析XML实现

      本文链接:https://www.haomeiwen.com/subject/wzthxrtx.html