- 浏览: 224201 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
蓝aiq冰:
这个是在哪个包下面的啊,Maven Dependencies里 ...
geronimo-javamail_1.4_spec-1.3.jar与mail.jar 冲突解决办法 -
xuliuliu:
为什么宽度为0的时候进度条不走呢
进度条 -
songrubo:
<pre name="code" c ...
XSD、XSLT、DOM4J解析XML -
aguai0:
想用一下,但是有点看不懂
SQL查询语句:将一列中多个不同的值放入一行的一个单元格里 -
vishare:
非常有用,谢谢
oracle 日期 查询
xml文件 000.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="000.xsl"?>
<addresses>
<value>
<no>A100</no>
<addr>上单位dd</addr>
</value>
<value>
<no>A101</no>
<addr>ss撒发达</addr>
</value>
</addresses>
xsd文件 000.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="addresses">
<xs:complexType>
<xs:sequence>
<xs:element name="value" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="no" type="xs:string" />
<xs:element name="addr" type="addr" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="addr">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
xslt文件 000.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- XSLT 语法参考w3cschool -->
<xsl:template match="/">
<html>
<head>
<title>First XSLT example</title>
</head>
<body>
<p>
<table border='1'>
<xsl:for-each select="addresses/value">
<tr>
<td>
<xsl:value-of select="no" />
</td>
<td>
<xsl:value-of select="addr" />
</td>
</tr>
</xsl:for-each>
</table>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
bean文件 XmlBean.java
package com.zht.bean;
public class XmlBean {
private String no;
private String addr;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "编号:" + this.no + ",地址:" + this.addr;
}
}
路径文件 ReadXmlFileStream.java
package com.zht.xml;
import java.io.InputStream;
public class ReadXmlFileStream {
private static final String XML_FILE = "com/zht/bean/000.xml";
private static final String XSD_FILE = "com/zht/bean/000.xsd";
private static final String XSL_FILE = "com/zht/bean/000.xsl";
private static final String HTML_FILE = "com/zht/bean/001.HTML";
public static InputStream getXmlFileStream() {
return Thread.currentThread().getContextClassLoader()
.getResourceAsStream(XML_FILE);
}
public static String getXML_FILE() {
return XML_FILE;
}
public static String getXSD_FILE() {
return XSD_FILE;
}
public static String getXSL_FILE() {
return XSL_FILE;
}
public static String getHTML_FILE() {
return HTML_FILE;
}
}
解析xml文件 DOM4JParseXml.java
package com.zht.xml;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Iterator;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.SAXValidator;
import org.dom4j.io.XMLWriter;
import org.dom4j.util.XMLErrorHandler;
import com.zht.bean.XmlBean;
public class DOM4JParseXml {
private static XmlBean address = new XmlBean();
public static void main(String[] args) {
// 读取XML文件内容
// ---====================读xml文件========================================
long starttime = System.currentTimeMillis();
try {
InputStream in = ReadXmlFileStream.getXmlFileStream();
Reader reader = new InputStreamReader(in, "utf-8"); // 注意编码问题
SAXReader SaxReader = new SAXReader();
Document doc = SaxReader.read(reader);
Element root = doc.getRootElement();
Element childNode = null;
// 枚举名称为value的节点
for (Iterator<Element> it = root.elementIterator("value"); it.hasNext();) {
childNode = (Element) it.next();
address.setNo(childNode.elementText("no"));
address.setAddr(childNode.elementText("addr"));
System.out.println(address);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - starttime) + " 毫秒");
// ---============================================================
// 写XML文件内容
try {
testWrite();
} catch (Exception e) {
e.printStackTrace();
}
// XML经XSD文件进行校验
validateXMLByXSD();
// XML经XSLT转换为HTML文件
String xml = ReadXmlFileStream.getXML_FILE();
String xsl = ReadXmlFileStream.getXSL_FILE();
String out = ReadXmlFileStream.getHTML_FILE();
xsl(xml,out,xsl);
}
/**
* 写XML
*/
public static void testWrite() throws Exception{
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element element1 = root.addElement("user")
.addAttribute("name","Alexander")
.addAttribute("blog", "http://netnova.blogjava.net")
.addText("我是中文的名字");
XMLWriter writer = new XMLWriter(new FileOutputStream("com/zht/bean/001.xml"));
writer.write(document);
writer.close();
System.out.println("写XML文件成功~!");
}
/**
* 通过XSD(XML Schema)校验XML
*/
public static void validateXMLByXSD() {
String xmlFileName = ReadXmlFileStream.getXML_FILE();
String xsdFileName = ReadXmlFileStream.getXSD_FILE();
try {
//创建默认的XML错误处理器
XMLErrorHandler errorHandler = new XMLErrorHandler();
//获取基于 SAX 的解析器的实例
SAXParserFactory factory = SAXParserFactory.newInstance();
//解析器在解析时验证 XML 内容。
factory.setValidating(true);
//指定由此代码生成的解析器将提供对 XML 名称空间的支持。
// factory.setNamespaceAware(true);
//使用当前配置的工厂参数创建 SAXParser 的一个新实例。
SAXParser parser = factory.newSAXParser();
//创建一个读取工具
SAXReader xmlReader = new SAXReader();
//获取要校验xml文档实例
Document xmlDocument = (Document) xmlReader.read(new File(xmlFileName));
//设置 XMLReader 的基础实现中的特定属性。核心功能和属性列表可以在 [url]http://sax.sourceforge.net/?selected=get-set[/url] 中找到。
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", "file:" + xsdFileName);
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidator validator = new SAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler);
//校验
validator.validate(xmlDocument);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if (errorHandler.getErrors().hasContent()) {
System.out.println("XML文件通过XSD文件校验失败!");
writer.write(errorHandler.getErrors());
System.out.println(errorHandler.getErrors().asXML());
} else {
System.out.println("Good! XML文件通过XSD文件校验成功!");
}
} catch (Exception ex) {
System.out.println("XML文件: " + xmlFileName + " 通过XSD文件:" + xsdFileName + "检验失败。\n原因: " + ex.getMessage());
ex.printStackTrace();
}
}
/**
* 通过XSL生成HTML文件
*/
public static void xsl(String inFilename, String outFilename,
String xslFilename) {
try {
TransformerFactory factory = TransformerFactory.newInstance();
Templates template = factory.newTemplates(new StreamSource(
new FileInputStream(xslFilename)));
Transformer xformer = template.newTransformer();
Source source = new StreamSource(new FileInputStream(inFilename));
Result result = new StreamResult(new FileOutputStream(outFilename));
xformer.transform(source, result);
System.out.println("生成html成功~!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
评论
[color=brown][color=yellow] :D :) :( :o :shock: :? 8) :lol: :x :P :oops: :arrow: :idea: :?: :!: :evil: :evil: :[size=medium][/size][align=left][/align]evil: :evil: [/color][/color][flash=200,200][/flash]
发表评论
-
mysql 5.7 zip版安装
2016-12-29 22:39 8050、下载并解压zip版mysql 1、添加环境变量path ... -
My97DatePicker时间控件使用
2014-09-04 14:44 873My97DatePicker时间控件使用 -
java 自定义信息 生成验证码
2013-10-31 19:26 907java 自定义信息 生成验证码 页面显示方式:查 ... -
图片 Base64 格式 字符串转换
2013-10-14 15:28 13056//Java 部分 package com.zht; ... -
java 通过调用JDBC连接Oracle;执行SQL*PlUS 导入sql脚本
2013-03-06 23:51 6923package com.zht; import java. ... -
Hibernate、Spring、Struts、DWR 配置 复习学习
2011-10-05 13:24 1183Hibernate、Spring、Struts、DWR ... -
dwr 前台传递与接收TimesTamp时间戳类型数据
2011-08-10 22:18 45761/model//-----定义model class,其中包 ... -
前台向DWR传递map/list,返回list/map到前台操作方法
2011-08-10 00:37 3545向DWR传递map/list,返回list/map操作方法 ... -
geronimo-javamail_1.4_spec-1.3.jar与mail.jar 冲突解决办法
2010-11-10 17:33 6215geronimo-javamail_1.4_spec-1.3. ... -
java 正则表达式 搜索文件
2010-09-26 15:36 1603import java.util.ArrayList;impo ... -
路径的获得方法
2010-08-17 18:11 1135获取路径的方法: System.out.print ... -
Tomcat内存溢出问题的处理方法
2010-07-29 08:43 1092当Tomcat启动动时若发生如下问题时(上网参考) ... -
整合 Spring 和 Strust2 一起工作
2010-07-14 09:55 839关键字: struts2 spring 在Struts2中 ... -
StAX解析XML
2010-06-05 17:21 1316Java代码 package com.xm ... -
JDOM解析XML
2010-06-05 17:19 940Java代码 package com.xm ... -
DOM4J解析XML
2010-06-05 17:18 1093Java代码 package com.xm ... -
SAX解析XML
2010-06-05 17:18 1557Java代码 package com.xm ... -
DOM解析XML
2010-06-05 17:15 1021Java代码 package com.xm ... -
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较
2010-06-05 17:10 15631.各种方式的详解 1)DOM ... -
JAVA m和n的最大公约数和最小公倍数
2009-09-28 20:07 3769public class Test { p ...
相关推荐
2. **SAX和DOM**: 除了DOM,DOM4J还支持SAX解析器,允许在内存有限的情况下处理大型XML文件。 3. **XPath**: 支持XPath表达式,使得可以方便地定位和提取XML文档中的特定节点。 4. **事件模型**: 提供了基于事件的...
读取XML文件,DOM4J使用SAXReader类,它可以解析XML文件并构建DOM4J的Document对象。之后,可以通过XPath表达式或者直接遍历元素树来访问XML数据。 ```java SAXReader reader = new SAXReader(); Document doc = ...
本文将深入探讨XML的基础知识,包括DTD(Document Type Definition)约束模式、Schema约束模式、XSLT样式表、SAX解析和DOM解析,以及不太常见的JOM解析。 1. **XML基础**: - XML设计的目标是传输和存储数据,而非...
- **XML数据的解析与生成**:DOM4J提供了强大的API来解析和生成XML数据,适用于需要读取和创建XML文档的应用。 - **XML数据的转换**:通过XPath和XSLT支持,DOM4J可以方便地实现XML数据的转换和格式化。 - **XML数据...
DOM4J和JAXEN是XML处理领域中的两个重要库,尤其在解析XSD(XML Schema Definition)文件时,它们起到了关键作用。DOM4J是一个功能强大且灵活的Java XML API,而JAXEN则是一个XPath处理器,允许你在各种XML API之间...
在IT领域,XML(eXtensible Markup Language)、XSD(XML Schema Definition)、HTML(Hypertext Markup Language)、XSL(Extensible Stylesheet Language)和DOM(Document Object Model)是五种非常重要的技术,...
2. **XML库支持**:如Java的JDOM、DOM4J,Python的lxml等库提供了丰富的API,简化XML文档的修改操作。 ### XML删除 1. **DOM操作**:删除DOM树中的节点,相应地更新XML文档。 2. **XPath表达式**:使用XPath定位要...
在开发过程中,XML解析还涉及到错误处理,例如验证XML是否符合其指定的DTD(Document Type Definition)或XSD(XML Schema Definition)。此外,XPath(XML Path Language)和XSLT(XML Stylesheet Language ...
1. JAXP (Java API for XML Processing):这是Java标准的XML处理API,包括DOM、SAX和XSLT支持。 2. JAXB (Java Architecture for XML Binding):JAXB是Java SE的一部分,用于自动将XML和Java对象之间进行映射,方便...
Java提供了丰富的API来处理XML文件,主要包括JAXP(Java API for XML Processing)、JDOM(Java-based XML API)和DOM4J等。JAXP是Java官方提供的XML处理包,它内嵌了对DOM、SAX和XSLT的支持,无需额外添加库文件。 ...
在Python中,我们可以使用`xml.dom.minidom`库进行DOM解析,`xml.sax`库进行SAX解析。例如,使用DOM解析XML文档: ```python import xml.dom.minidom doc = xml.dom.minidom.parse("example.xml") root = doc....
在本例中,"用于xml解析jar包"可能包含了一些用于XML解析的Java类库,如JAXB、DOM4J、JDom或Woodstox等。 4. JAXB(Java Architecture for XML Binding): JAXB是Java标准API,用于将XML文档和Java对象之间进行...
1. **XML解析**:你可以使用DOM(Document Object Model)或SAX(Simple API for XML)解析器来读取和操作XML文档。DOM将整个XML文件加载到内存中,便于查找和修改数据;而SAX则是事件驱动的,只在需要时读取部分...
XML解析是处理XML文档的关键步骤,主要有两种方式:DOM(Document Object Model)解析和SAX(Simple API for XML)解析。 1. DOM解析:DOM将整个XML文档加载到内存中,形成一棵元素树。每个节点代表XML文档的一部分...
4. **第三方解析库**:除了标准的Java API,还有许多第三方库如JDOM、DOM4J、XOM等,它们提供了更易用的API来操作XML。 5. **在线解析工具**:对于简单的XML文件分析,一些在线工具如XML Viewer、Pretty XML等可以...
1. **XML解析**:XML4J提供了DOM(Document Object Model)和SAX(Simple API for XML)两种解析方式。DOM解析将整个XML文档加载到内存中,形成一个树形结构,便于进行复杂的查询和修改操作。而SAX是一种事件驱动的...
1. 解析XML:Java提供了多种解析XML的方法,包括DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。DOM将整个XML文档加载到内存中,形成一棵树状结构,适合小规模或静态...
使用`XmlSchemaSet`和`XmlReaderSettings`,可以在解析XML时验证其是否符合指定的XML Schema(XSD),确保数据的正确性。 10. **异步XML处理** 在.NET Framework 4.5及以上版本,`XmlReader`和`XmlWriter`支持...
4. DTD(Document Type Definition)与XSD(XML Schema):这两个是XML的验证机制,用来定义XML文档的结构和数据类型。 二、Java解析XML 1. DOM解析:DOM(Document Object Model)模型将整个XML文档加载到内存中...