- 浏览: 82777 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
yuanliangding:
有没有办法改呢。
使用反射修改final属性 -
风雪木易:
a并没有改变,用a.getter访问,别用field.get( ...
使用反射修改final属性 -
lylegend13:
哈包祥明 写道可以问一下 这篇文章要说明什么》》???
AC ...
1012 -
哈包祥明:
可以问一下 这篇文章要说明什么》》???
1012 -
gengu:
你写代码注释都不带的??
KMP
1、创建.xml,设计.xml结构。
<?xml version="1.0"?> <Xmodel> <Xnodes> <Xnode id="n1" type="node2"></Xnode> <Xnode id="n2" type="node3"></Xnode> <Xnode id="n3" type="node4"></Xnode> </Xnodes> <Xbizs> <Xbiz id="b1" snode="n1" tnode="n2"></Xbiz> <Xbiz id="b2" snode="n3" tnode="n1"></Xbiz> </Xbizs> </Xmodel>
2、创建.xsd,可以借助XMLSpy软件,有从.xml生成.xsd功能。
注意:maxOccurs="unbounded"这句,能表示出Xbizs里可以有很多Xbiz
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Xmodel"> <xs:complexType> <xs:sequence> <xs:element name="Xnodes" type="Xnodes"/> <xs:element name="Xbizs" type="Xbizs"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Xnodes"> <xs:sequence> <xs:element name="Xnode" type="Xnode" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="Xbizs"> <xs:sequence> <xs:element name="Xbiz" type="Xbiz" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="Xnode"> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="type" type="xs:string" use="required"/> </xs:complexType> <xs:complexType name="Xbiz"> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="snode" type="xs:string" use="required"/> <xs:attribute name="tnode" type="xs:string" use="required"/> </xs:complexType> </xs:schema>
3、生成中间模型,可以使用xjc命令,也可以借助专门编写的"ant打jar包"的.xml。这里我采用后者生成了.jar,结构如下:
-test.jaxb.jar -test.jaxb -ObjectFactory.class -Xbiz.class -Xbizs.class -Xmodel.class -Xnode.class -Xnodes.class
Xmodel.java内容如下:
package test.jaxb; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "xnodes", "xbizs" }) @XmlRootElement(name = "Xmodel") public class Xmodel { @XmlElement(name = "Xnodes", required = true) protected Xnodes xnodes; @XmlElement(name = "Xbizs", required = true) protected Xbizs xbizs; public Xnodes getXnodes() { return xnodes; } public void setXnodes(Xnodes value) { this.xnodes = value; } public Xbizs getXbizs() { return xbizs; } public void setXbizs(Xbizs value) { this.xbizs = value; } }
Xnodes.java内容如下:
package test.jaxb; import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Xnodes", propOrder = { "xnode" }) public class Xnodes { @XmlElement(name = "Xnode", required = true) protected List<Xnode> xnode; public List<Xnode> getXnode() { if (xnode == null) { xnode = new ArrayList<Xnode>(); } return this.xnode; } }
4、编写本地的对象模型,我这里的对象模型类结构如下:
-src -object -Biz.java -Model.java -Node.java
Model.java内容如下:
package object; import java.util.ArrayList; import java.util.List; public class Model { public List<Node> nodeList=new ArrayList<Node>(); public List<Biz> bizList=new ArrayList<Biz>(); }
5、读取.xml后,写到另一个.xml。
package object; import java.io.File; import java.util.HashMap; import java.util.Map; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import test.jaxb.ObjectFactory; import test.jaxb.Xbiz; import test.jaxb.Xmodel; import test.jaxb.Xnode; public class test { public static void main(String[] args) { Model model = read(); if (null != model) { write(model); } } public static Model read() { try { JAXBContext jc = JAXBContext.newInstance("test.jaxb"); Unmarshaller u = jc.createUnmarshaller(); Xmodel Xmodel = (Xmodel) u.unmarshal(new File( "C:\\read.xml")); Model model = new Model(); Map<String, Node> nodeSet = new HashMap<String, Node>(); for (Xnode Xnode : Xmodel.getXnodes().getXnode()) { Node node = new Node(); node.id = Xnode.getId(); node.type = Xnode.getType(); nodeSet.put(node.id, node); model.nodeList.add(node); } for (Xbiz bizType : Xmodel.getXbizs().getXbiz()) { Biz biz = new Biz(); biz.id = bizType.getId(); biz.snode = nodeSet.get(bizType.getSnode()); biz.tnode = nodeSet.get(bizType.getTnode()); model.bizList.add(biz); } System.out.println(model.nodeList.size()); for (Node node : model.nodeList) { System.out.println(node.id + " " + node.type); } System.out.println(); System.out.println(model.bizList.size()); for (Biz biz : model.bizList) { System.out.println(biz.id + " " + biz.snode.id + " " + biz.snode.type + " " + biz.tnode.id + " " + biz.tnode.type); } return model; } catch (JAXBException e) { e.printStackTrace(); return null; } } public static void write(Model model) { try { JAXBContext jc = JAXBContext.newInstance("test.jaxb"); Marshaller m = jc.createMarshaller(); ObjectFactory factory = new ObjectFactory(); Xmodel Xmodel = factory.createXmodel(); for (Node node : model.nodeList) { Xnode Xnode = factory.createXnode(); Xnode.setId(node.id); Xnode.setType(node.type); Xmodel.getXnodes().getXnode().add(Xnode); } Xmodel.setXbizs(factory.createXbizs()); for (Biz biz : model.bizList) { Xbiz bizType = factory.createXbiz(); bizType.setId(biz.id); bizType.setSnode(biz.snode.id); bizType.setTnode(biz.tnode.id); Xmodel.getXbizs().getXbiz().add(bizType); } m.marshal(Xmodel, new File( "C:\\write.xml")); } catch (JAXBException e) { e.printStackTrace(); } } }
打印结果: 3 n1 node2 n2 node3 n3 node4 2 b1 n1 node2 n2 node3 b2 n3 node4 n1 node2
发表评论
-
SAX方式,解析XML
2012-10-19 23:50 1117xml文件 <bookstore> <b ... -
使用反射修改final属性
2012-05-07 22:37 10486情型1:static final属性,无法修改其值。 pac ... -
超大数乘法
2012-04-27 00:12 0package m4.d26; import java. ... -
超大数
2012-03-28 01:13 0public class LinkTest { publi ... -
1182(未通过)
2012-02-24 15:56 771网上说用并查集,半天没看懂,我的代码题中的测试数据通过,但没通 ... -
1282(未通过)
2012-02-23 17:00 769遍历法,超时 package p1; impor ... -
一维数组,N皇后
2012-02-23 14:46 870import java.util.Arrays; ... -
一个Applet的练习
2011-12-10 20:10 7521. 画随机的园 功能要求:实现简单的动画 ... -
闹钟程序
2011-12-10 14:04 0import java.util.Calendar; ... -
隐藏文件
2011-11-19 11:02 0File backupDir = null; Fi ... -
日期“天数+1”的多种方法
2011-11-11 17:13 1385说明:准确打印出日期,从今天到明年的今天,主要是2月。 ... -
NIO的使用(RandomAccessFile、Charset)
2011-10-17 13:35 1171import java.io.FileNotFoundE ... -
NIO的使用(FileInputStream/FileOutputStream)
2011-10-17 13:34 974import java.io.FileInputStre ... -
ant打jar包
2011-10-12 16:03 0<project default=" ... -
Java读写.zip里的.xml
2011-10-11 17:03 955import java.io.FileNotFoundE ... -
Java读写xml(对简单关系,无需中间模型)
2011-10-11 11:26 1220import java.io.File; import ja ... -
Practical Java 记录
2011-09-09 16:59 729实践9: 1、不同类的对象,equals()结果false。 ... -
希尔排序
2011-08-18 10:55 863public class test { publ ... -
堆排序
2011-08-18 10:11 608public class test { publ ... -
归并排序
2011-08-17 15:51 569public class test { publ ...
相关推荐
### Java读写XML文件操作详解 在现代软件开发中,XML(可扩展标记语言)是一种广泛使用的数据交换格式,尤其在处理配置文件、数据存储以及跨平台数据交换时显得尤为重要。Java提供了多种读写XML文件的方法,包括SAX...
### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...
下面将详细阐述DOM模型、解析过程以及如何在Java中使用DOM进行XML读写。 DOM模型的核心概念是节点(Node)。XML文档的每个部分——元素(Element)、属性(Attribute)、文本(Text)等都被表示为一个节点对象。DOM...
在XML数据绑定中,Java Bean充当了数据模型的角色,其属性对应于XML文档中的元素或属性。 JAXB的核心功能包括: 1. **序列化**:将Java对象转换为XML文档。通过JAXBContext实例,我们可以获取Marshaller对象,然后...
综上所述,无论是在C#还是Java中,都有多种高效且灵活的方法来读写XML文件。选择哪种方法取决于具体的需求,如文件大小、性能要求、代码简洁性等。使用适当的辅助工具,可以显著提高开发效率并降低出错概率。在实际...
至于“xml读写_java”,Java提供了多种方式来读写XML文件。使用DOM解析器,可以创建DocumentBuilder实例,然后使用parse()方法解析XML文件得到Document对象,再通过getElementsByTagname()等方法获取元素,最后用...
Java和XML数据绑定是将XML文档中的数据与Java对象模型之间建立映射关系的技术,使得开发者可以方便地在XML和Java对象之间进行数据交换。这项技术对于处理XML数据的Java应用来说至关重要,尤其是在Web服务、配置文件...
### Java操作XML文件读写与树型...通过上述分析,我们不仅了解了如何使用Java和JDOM库读写XML文件,还探讨了基于XML数据生成树型菜单的基本思路。这对于开发需要处理复杂结构化数据的应用程序来说是非常有用的技能。
本示例中,我们关注的是JDOM库,它为XML文档提供了简单而直接的API,使得读写XML文件变得更加方便。下面我们将详细探讨如何使用JDOM进行XML文件的操作。 首先,为了读取XML文件,我们需要引入JDOM库。在Java项目中...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和易于解析的特点广泛应用于软件...实践是学习的最佳途径,尝试编写读写XML的程序,将有助于你更好地掌握DOM4J的用法。
### 使用Java进行XML文件的读写 #### 一、引言 XML(Extensible Markup Language,可扩展标记语言)是一种非常流行的用于存储和传输数据的标准格式。它具有良好的跨平台特性,易于理解和处理,因此在数据交换场景中...
在Java Web开发中,XML...总之,JSP中读写XML文件是常见的需求,通过DOM和SAX解析器,以及JavaBean封装,我们可以方便地处理XML数据。同时,了解XML与SOAP在Web服务中的应用,也是提升Java Web开发能力的重要一环。
XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、Web服务和数据存储等领域。在Java中,有几种不同的API可以用来处理XML文档,包括DOM、SAX、JDOM和DOM4J。下面将详细...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,尤其在Java应用程序中,XML的读写操作是常见的数据处理任务。本篇将深入探讨Java中XML文档的读写方法,包括直接读写、DOM...
反之,当用户对通讯录进行操作时,Java程序也会更新XML文件以保持数据的一致性。 为了实现Java与XML之间的交互,开发者可能使用了Java API for XML Processing (JAXP) 或者DOM4J等库。JAXP提供了解析和生成XML文档...
- **访问控制**:限制用户对XML数据的读写权限。 - **加密**:对敏感数据进行加密,保护信息安全。 7. **应用场景**: - **Web服务**:XML用于描述Web服务接口(如WSDL)和数据交换(如SOAP)。 - **数据集成**...
3. StAX API:介于DOM和SAX之间,提供了一种流式读写XML的方式,允许开发者以迭代的方式处理XML,既节省内存又具有一定的灵活性。 4. JAXB:Java架构绑定工具可以将XML Schema自动映射为Java类,使得XML数据和Java...
对于复杂的对象模型,JAXB大大简化了XML的处理。首先,需要定义一个Java类来映射XML元素,然后使用`javax.xml.bind.JAXBContext`和`Marshaller`、`Unmarshaller`进行转换。 ```java JAXBContext context = ...
在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和传输结构化数据。本文将深入探讨Java中处理XML的四种常见方法:DOM(Document Object Model)、SAX(Simple API for XML...