19 标签:xml或者html

1       标签:xml或者html

1.1  使用XmlSlurper解析xml

groovy处理xml非常容易。XmlSlurper 类用来处理xml。在处理xml方面,还有其他的处理方式,但是XmlSlurper 处理效率更加的高效,并且灵活性很好。

XmlSlurper 执行parseText后返回GPathResult 对象。能够使用GPath 表达式来访问xml树中的各个层级节点。

用点(.)来读取需要的子节点,并且使用@读取属性值。


package xml

class XmlSlurperTest {

static main(args) {

def xmldocument=‘‘‘

<persons>

<person age="3">

<name>

<firstname sex="男">zuoys</firstname>

<lastname>yaoyuan2</lastname>

</name>

</person>

<person age="4">

<name>

<firstname>yang</firstname>

<lastname>jack</lastname>

</name>

</person>

</persons>

‘‘‘;

//解析并读取该xml

def persons = new XmlSlurper().parseText(xmldocument);

/**

* 当然,也可以从一个磁盘中的文件中读取,如

* def persons = new XmlSlurper().parse(new File(‘data/plan.xml‘))

*/

def allRecords = persons.person.size();

println("xml文档中person的数量是:$allRecords");

def person = persons.person[0];

println("person‘name下的所有元素(不含属性)的值:${person.name}");

for (p in persons.person) {

println("${p.name.firstname.text()},${p.name.lastname.text()} 是 ${[email protected]age} 岁");

}

}

}

输出


xml文档中person的数量是:2

person‘name下的所有值:zuoysyaoyuan2

zuoys,yaoyuan2 是 3 岁

yang,jack 是 4 岁

1.2  使用MarkupTemplateEngine生成标签

在Groovy2.3中,MarkupTemplateEngine 支持生成类似xml的标记(XML, XHTML, HTML5等),但是,其通常被用来生成任意的文本。

静态编译非常快,并且支持国际化,同时也支持模板(template)。


package xml

import groovy.text.markup.MarkupTemplateEngine

import groovy.text.markup.TemplateConfiguration

import template.Task

class MarkupTemplateEngineTest {

static main(args) {

String xml_template = ‘‘‘xmlDeclaration()

tasks {

tasks.each {

task (summary:it.summary,duration:it.duration);

};

};

‘‘‘;

String html_template=‘‘‘

yieldUnescaped ‘<!DOCTYPE html>‘;

html(lang:‘en‘) {

head {

meta(‘http-equiv‘:‘"Content-Type" content="text/html; charset=utf-8"‘);

title(‘My page‘);

};

body {

p(‘这是一个html例子‘);

};

};

‘‘‘;

def values = [tasks:[

new Task(summary:"java",duration:4),

new Task(summary:"groovy",duration:12)

]

];

TemplateConfiguration config = new TemplateConfiguration();

def engine = new MarkupTemplateEngine(config);

def template1 = engine.createTemplate(xml_template);

def template2 = engine.createTemplate(html_template);

println("===xml输出:");

println template1.make(values);

println("===html输出:");

println template2.make(values);

}

}

输出


===xml输出:

<?xml version=‘1.0‘?>

<tasks><task summary=‘java‘ duration=‘4‘/><task summary=‘groovy‘ duration=‘12‘/></tasks>

===html输出:

<!DOCTYPE html><html lang=‘en‘><head><meta http-equiv=‘"Content-Type" content="text/html; charset=utf-8"‘/><title>My page</title></head><body><p>这是一个html例子</p></body></html>

Templates support includes.

1.3  使用MarkupBuilder创建标签(xml)文件

MarkupBuilder 是一个很老的builder,例子如下:


package xml

import groovy.xml.MarkupBuilder

/**

* 生产xml

* @author zuoys

*

*/

class MarkupWriter {

static main(args) {

def date = new Date();

StringWriter writer = new StringWriter();

MarkupBuilder builder = new MarkupBuilder(writer);

builder.tasks {

for (i in 1..3) {

task {

summary(value:"Test $i");

description(value:"Description $i");

duedate(value:"${date.format(‘yyyy-MM-dd‘)}");

};

}

};

println(writer.toString());

}

}

输出


<tasks>

<task>

<summary value=‘Test 1‘ />

<description value=‘Description 1‘ />

<duedate value=‘2016-07-24‘ />

</task>

<task>

<summary value=‘Test 2‘ />

<description value=‘Description 2‘ />

<duedate value=‘2016-07-24‘ />

</task>

<task>

<summary value=‘Test 3‘ />

<description value=‘Description 3‘ />

<duedate value=‘2016-07-24‘ />

</task>

</tasks>

builder.tasks {:生成父节点。

task {生成二级子节点。

summary(value:"Test $i");:使用构造方法来创建子节点。

使用MarkupBuilder时,这些都是在运行时构建的。

也可以使用map,如下:


package xml

import groovy.xml.MarkupBuilder

class MarkupWriterMap {

static main(args) {

Map map = [zuo:"zuoys",yang:"yangyang"];

def date = new Date();

StringWriter writer = new StringWriter();

MarkupBuilder builder = new MarkupBuilder(writer);

builder.tasks {

map.each {key,myvalue ->

person {

firstname(value:"$key");

lastname(value:"$myvalue");

};

};

};

println(writer.toString());

}

}

输出


<tasks>

<person>

<firstname value=‘zuo‘ />

<lastname value=‘zuoys‘ />

</person>

<person>

<firstname value=‘yang‘ />

<lastname value=‘yangyang‘ />

</person>

</tasks>

也可以使用builder来创建合法的html。


package xml

import groovy.xml.MarkupBuilder

class MarkupHtml {

static main(args) {

Map map = [zuo:"zuoys",yang:"yangyang"];

def date = new Date();

StringWriter writer = new StringWriter();

MarkupBuilder builder = new MarkupBuilder(writer);

builder.html {

head {

title("yaoyuan2.com");

};

body {

div (class:"strike");

p ("this is line");

};

};

println(writer.toString());

}

}

输出


<html>

<head>

<title>yaoyuan2.com</title>

</head>

<body>

<div class=‘strike‘ />

<p>this is line</p>

</body>

</html>

时间: 2024-08-08 01:18:35

19 标签:xml或者html的相关文章

Jersey(1.19.1) - XML Support

As you probably already know, Jersey uses MessageBodyWriters and MessageBodyReaders to parse incoming request and create outgoing responses. Every user can create its own representation but... this is not recommended way how to do things. XML is prov

读取只包含标签的xml

什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中标记是关键部分.用户可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息.标记语言从早起的私有公司和政府制定形式逐渐演变成标准通用标记语言(Standard Generalized Markup Language,SGML).超文本标记语言(Hypertext Markup Language,HTML),并且最终演变成XML.XML有以下几个特点: XML的设

XML

一.XML概述     定义:Extensible Makeup Language(可扩展标记语言);     作用:         1.存储数据,有良好的存储格式,多种语言通用         2.作为配置文件,许多框架都使用xml作为配置文件     语法:         1.文件后缀名必须为.xml;         2.文档声明必须写在第一行,且前面不能空格,一般写法:<?xml version="1.0" encoding="UTF-8"?>

转:在java中使用dom4j解析xml

在java中使用dom4j解析xml 虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: <?xml version="1.0" encod

Android 使用pull,sax解析xml

pull解析xml文件 1.获得XmlpullParser类的引用 这里有两种方法 //解析器工厂 XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); XmlPullParser pullParser=factory.newPullParser(); //直接获得实例XmlPullParser pullParser= Xml.newPullParser(); 2.设置解析内容 通过setInput方法设置解析内容  

SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-006-定义切面使用xml

一. 1.其他类和上个例子一样,观众类比使用@AspectJ方式的少了标签及pointcut,before等定义 1 package com.springinaction.springidol; 2 3 public class Audience { 4 public void takeSeats() { //<co id="co_takeSeats"/> 5 System.out.println("The audience is taking their sea

javaweb学习总结(二十七)——jsp简单标签开发案例和打包

一.开发标签库 1.1.开发防盗链标签 1.编写标签处理器类:RefererTag.java 1 package me.gacl.web.simpletag; 2 3 import java.io.IOException; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import javax.servlet.jsp.JspException;

(转)通过 XML Catalog 实现 XML 文件的自动化实时校验

引言 XML Catalog 实现了根据 XSD 实时校验 XML 文件的功能.用户不用编写程序,通过少量的配置就可以在编辑 XML 文件的时候得到及时的反馈(需要在 XML 编辑器进行文件的编写),实现了实时的校验. 然而在实际应用中,由于环境的不同以及 XML 文件本身的不同,手动方式的配置并不能满足需求.比如,作者在实践中发现,在开发环境里手动配置的 XML Catalog 是不能保存在运行环境的.而且,许多实际的 XML 的编写方式并没有采用标准的格式,这也给 XML Catalog 的

jsp2自定义标签+属性

前面说过jsp2自定义标签如果要加入属性需要设置属性的getter和setter方法.代码如下: 1 public class GetParam extends SimpleTagSupport { 2 private String driver; 3 private String url; 4 private String user; 5 private String pwd; 6 private String sql; 7 private Connection conn = null;; 8