`
superheizai
  • 浏览: 65968 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

强大的XOM包——simple-xml

阅读更多
simple-xml是一个xml和对象互转操作包,官方地址在这里:
http://simple.sourceforge.net/
上面提供了详细的说明和操作方法,非常强大。
这里转载下熔岩同学提供的例子,自己也从这里学到了很多,:
package test1; 

import org.simpleframework.xml.*; 
import org.simpleframework.xml.core.Persister; 

import java.io.File; 
import java.util.List; 
import java.util.ArrayList; 

@Root 
public class Example { 

        @Element 
        private String text; 

        @Attribute 
        private int index; 

        @Element() 
        private boolean flag; 

        @Element(required = false) 
        private Integer num; 

        @ElementList(required = false) 
        private List<String> slist = new ArrayList<String>(); 

        public Example() { 
                super(); 
        } 

        public Example(String text, int index) { 
                this.text = text; 
                this.index = index; 
//                slist.add("sdf"); 
        } 

        public String getMessage() { 
                return text; 
        } 

        public int getId() { 
                return index; 
        } 


        public static void main(String[] args) throws Exception { 
                Serializer serializer = new Persister(); 
                Example example = new Example("Example message", 123); 
                File result = new File("outxml/example.xml"); 

                serializer.write(example, result); 


                Example _obj = serializer.read(Example.class, result); 
                System.out.println(_obj.getMessage()); 


        } 
}


输入的文件内容:
<example index="123">
     <text>Example message</text>
     <flag>false</flag>
     <slist class="java.util.ArrayList"/>
</example>

控制台输出信息:
Example message

Process finished with exit code 0

第二个例子:
@Root 
public class Customer { 
        @Attribute(required = true) 
        private Long id; 
        @Element(required = true) 
        private String name; 
        @Element(required = false) 
        private Address address; 
        @ElementList(required = false,    type = Order.class) 
        private List<Order> orderList = new ArrayList<Order>(0); 

        public Customer() { 
        } 

        public Customer(Long id, String name) { 
                this.id = id; 
                this.name = name; 
        } 

@Root 
public class Address { 
        @Element(required = true) 
        private String code; 
        @Element 
        private String street; 
        @Element 
        private boolean isopen; 

        public Address() { 
        } 

        public Address(String code, String street, boolean isopen) { 
                this.code = code; 
                this.street = street; 
                this.isopen = isopen; 
        } 


@Root 
public class Order { 
        @Attribute(required = true) 
        private Long id; 
        @Element(required = true) 
        private Date cdate; 
        @ElementList(required = false, type = Item.class) 
        private List<Item> itemList = new ArrayList<Item>(0); 

        public Order() { 
        } 

        public Order(Long id, Date cdate) { 
                this.id = id; 
                this.cdate = cdate; 
        } 

@Root 
public class Item { 
        @Attribute 
        private Long id; 
        @Element(required = true) 
        private int num; 
        @Element(required = false) 
        private BigDecimal price; 

        public Item() { 
        } 

        public Item(int num, Long id) { 
                this.num = num; 
                this.id = id; 
        } 


package test; 

import org.simpleframework.xml.Serializer; 
import org.simpleframework.xml.core.Persister; 

import java.util.Date; 
import java.io.File; 

/** 
* Created by IntelliJ IDEA. 
* 
* @author leizhimin 2008-12-29 22:05:16 
*/ 
public class TestSimple { 
        public static void main(String[] args) throws Exception { 
                Customer customer = new Customer(111L, "张三"); 
                Order order1 = new Order(1L, new Date()); 
                Order order2 = new Order(2L, new Date()); 
                Item item11 = new Item(1, 11L); 
                Item item21 = new Item(2, 21L); 
                Address address = new Address("450000", "瑞达路XX#", true); 

                customer.setAddress(address); 
                customer.getOrderList().add(order1); 
                customer.getOrderList().add(order2); 
                order1.getItemList().add(item11); 
                order2.getItemList().add(item21); 


                Serializer serializer = new Persister(); 
                File result = new File("outxml/customer.xml"); 

                serializer.write(customer, result); 

                Customer _obj = serializer.read(Customer.class, result); 
                System.out.println(_obj.getName()); 
                System.out.println(_obj.getOrderList().get(0).getCdate()); 

        } 
}




生成的文件:
<customer id="111">
     <name>张三</name>
     <address>
            <code>450000</code>
            <street>瑞达路XX#</street>
            <isopen>true</isopen>
     </address>
     <orderList class="java.util.ArrayList">
            <order id="1">
                 <cdate>2008-12-29 23:36:36.390 CST</cdate>
                 <itemList class="java.util.ArrayList">
                        <item id="11">
                             <num>1</num>
                        </item>
                 </itemList>
            </order>
            <order id="2">
                 <cdate>2008-12-29 23:36:36.390 CST</cdate>
                 <itemList class="java.util.ArrayList">
                        <item id="21">
                             <num>2</num>
                        </item>
                 </itemList>
            </order>
     </orderList>
</customer>

控制台输出的内容:
张三
Mon Dec 29 23:36:36 CST 2008

Process finished with exit code 0
分享到:
评论
1 楼 wubill 2011-03-07  
这个和另个XOM(http://www.xom.nu/) 是什么关系?

相关推荐

    java-xml驱动包.zip

    Java XML驱动包主要包含了处理XML文档的一系列库,这些库在开发中经常用于解析、创建、操作和转换XML数据。本压缩包中的四个文件——dom4j-1.6.1.jar、jaxen-1.1-beta-7.jar、jdom-1.1.jar和sax-2.0.1.jar,都是Java...

    基于stm32的机械臂控制程序(亲测可用)

    STM32是STMicroelectronics推出的一系列32位ARM Cortex-M内核的微控制器。它们以高性能、低功耗和丰富的外设资源著称,非常适合用于需要实时处理能力的应用场景,如机械臂控制系统。在机械臂控制系统中,STM32通常被用来作为主控单元,负责接收来自传感器的数据,执行复杂的计算任务,并输出控制信号给驱动器,以完成机械臂的定位和动作。 软件与算法 软件方面,该控制程序一般包括底层驱动程序、中间件以及应用层代码。底层驱动程序直接操作硬件资源,比如定时器、ADC(模拟-数字转换器)、串行通信接口等,为上层提供统一的API接口。中间件则可能包含RTOS(实时操作系统)或简单的调度机制,确保各个任务能够高效地运行并及时响应外部事件。应用层则是具体实现机械臂控制逻辑的部分,例如路径规划算法、逆运动学求解、PID控制算法等。 控制策略 对于机械臂而言,控制策略的选择至关重要。一个典型的例子是使用PID控制算法来调整每个关节的位置。PID控制器通过比例(P)、积分(I)和微分(D)三个参数的组合,可以有效地减少误差,并提高系统的稳定性和响应速度。

    2012数学建模国赛B题国家一等奖论文.pdf

    2012数学建模国赛B题国家一等奖论文.pdf

    省、市、县(区)最新土地利用类型面板数据(含36种用地类型)(全新整理)

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/141309009 2、代码特点:今年全新,手工精心整理,放心引用,数据来自权威,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理 ## 数据名称:省、市、县(区)最新土地利用类型面板数据(含36种用地类型)。内容来源于网络分享,如有侵权请联系我删除。

    综合能源系统中P2G与碳捕集设备优化调度模型:算法解析与案例实践,基于Matlab+Yalmip+Gurobi的P2G与碳捕集设备综合能源系统优化调度模型研究,考虑P2G和碳捕集设备的热电联供综合能源

    综合能源系统中P2G与碳捕集设备优化调度模型:算法解析与案例实践,基于Matlab+Yalmip+Gurobi的P2G与碳捕集设备综合能源系统优化调度模型研究,考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 代码采用matlab+yalmip+gurobi求解,模块化编程,注释详细。 代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳机制,建立了综合能源系统运行优化模型,与目前市面上的代码不同,本代码完全复现《Modeling and optimization of combined heat and power with power to-gas and carbon capture system in integrated energy syste》文中所提出的四种算例场景,没有对比算例,买过去也没有任何意义,四种算例主要包括: 1)不包括P2G、CCS、以及碳 2)包括P2G,但是不包括CCS以及碳 3)包括P2G和CCS,但是不包括碳 4)包括P2G、CCS以及碳 ,核

    基于MVC架构的Java在线考试与测评系统:运用Servlet、JDBC、MySQL与JSP实现智能阅卷功能,基于MVC架构的Java在线考试与测评系统-整合Servlet、JDBC、MySQL与J

    基于MVC架构的Java在线考试与测评系统:运用Servlet、JDBC、MySQL与JSP实现智能阅卷功能,基于MVC架构的Java在线考试与测评系统——整合Servlet、JDBC、MySQL与JSP,融入百度文本相似度智能判分功能,java在线考试系统,在线测试系统 使用技术: mvc架构,servlet,jdbc,mysql,jsp,百度文本相似度识别 软件: eclipse Myeclipse mysql jdk1.8 tomcat8.0 功能描述:普通陪你过用户,管理员,命题人,阅卷人 普通用户可以进行在线测试,测评成功录入个人信息生成对应的账号面,查询个人的考试成绩等 管理员可以对题库,题型,试卷,考试,员工,阅卷进行管理 命题人可以对题库进行管理 阅卷人进行阅卷,使用百度短文本相似度,能够根据正确答案对学生的主观题进行智能判分,,近似0.8以上,认为满分,0.5以上7分,0.3以上5分,否则0分 包含需求文档,java源码,数据库源码,使用说明 ,在线考试系统; mvc架构; 编程技术; 数据库管理; 智能判分; 百度文本相似度识别; 需求文档; 源码; 测试系统;

    基于stm32的自平衡独轮机器人程序(亲测可用,已验证)

    1. 硬件平台 该自平衡独轮机器人的核心是STM32微控制器,它是一系列由STMicroelectronics生产的32位ARM Cortex-M内核的单片机。STM32以其高性能、低功耗以及丰富的外设接口而著称,非常适合于实时控制系统的设计。在本项目中,使用的是具有足够处理能力的型号,以支持复杂的控制算法运行。 为了实现平衡控制,必须集成多种传感器。通常包括一个陀螺仪和加速度计组合(如MPU6050),用于测量角速度和加速度;可能还需要磁力计来提供更准确的方向信息。这些传感器的数据通过I2C或SPI总线与STM32进行通信,为控制系统提供必要的反馈信号。 此外,电机驱动电路也是关键组件之一。由于需要驱动直流无刷电机(BLDC)或有刷直流电机,因此需要合适的电机驱动器(如L298N或DRV8833)。电机的选择将直接影响到系统的动态响应特性和能效比。 2. 软件架构 软件部分主要包括底层硬件抽象层(HAL)、传感器数据采集模块、滤波算法、姿态解算模块、PID控制算法以及用户界面。其中,HAL库简化了硬件操作,使得开发者可以更容易地访问STM32的各种功能。

    envoy-extauth 2.zip

    envoy-extauth 2.zip

    concretebond.zip_matlab随机骨料模型_混凝土_随机骨料_随机骨料模型_骨料

    在混凝土研究等领域,广泛使用二维随机骨料模型,附件即为源程序。内容来源于网络分享,如有侵权请联系我删除。

    基于Matlab的双温模型模拟:带载流子密度与电子晶格温度的有限元分析在飞秒激光源模拟中的应用,基于双温模型与有限元法的载流子密度与电子晶格温度模拟研究:飞秒激光源下的德鲁德模型应用,带载流子密度的双

    基于Matlab的双温模型模拟:带载流子密度与电子晶格温度的有限元分析在飞秒激光源模拟中的应用,基于双温模型与有限元法的载流子密度与电子晶格温度模拟研究:飞秒激光源下的德鲁德模型应用,带载流子密度的双温模型matlab,电子晶格温度,电子密度,飞秒激光源模拟,有限元法解偏微分方程。 德鲁德模型,带载流子密度变化。 ,核心关键词:双温模型; Matlab; 载流子密度; 电子晶格温度; 飞秒激光源模拟; 有限元法; 偏微分方程; 德鲁德模型; 带载流子密度变化。,基于双温模型与有限元法的飞秒激光源模拟:电子密度与温度的动态变化研究

    基于LDA算法的二分类与多分类模型:程序内注释替换数据,Matlab实现及可视化效果展示,基于LDA算法的MATLAB多特征输入二分类与多分类模型:程序注释与可视化效果展示,基于线性判别LDA的多特征

    基于LDA算法的二分类与多分类模型:程序内注释替换数据,Matlab实现及可视化效果展示,基于LDA算法的MATLAB多特征输入二分类与多分类模型:程序注释与可视化效果展示,基于线性判别LDA的多特征输入单输出的二分类及多分类模型。 程序内注释详细替数据就可以用。 程序语言为matlab。 程序可出分类效果图,迭代优化图,混淆矩阵图具体效果如下所示。 ,核心关键词:LDA模型; 多特征输入; 单输出二分类; 多分类; MATLAB编程; 分类效果图; 迭代优化图; 混淆矩阵图。,MATLAB实现LDA分类模型及其效果可视化程序

    kotlin语言视频教程完整版.zip

    kotlin语言视频教程完整版,入门学习,非常详细,从零基础入门到精通。

    python数据分析与实战源码.rar

    python数据分析与实战源码.rar

    美赛教程&建模&数据分析&案例分析

    美赛教程&建模&数据分析&案例分析

    西门子S7-200 CPU226水质监控程序:子程序调用结构清晰,附昆仑通态触摸屏程序赠送,西门子S7-200 CPU226水质监控程序:子程序调用,结构明晰,附送昆仑通态触摸屏程序,专业定制解决方案

    西门子S7-200 CPU226水质监控程序:子程序调用结构清晰,附昆仑通态触摸屏程序赠送,西门子S7-200 CPU226水质监控程序:子程序调用,结构明晰,附送昆仑通态触摸屏程序,专业定制解决方案,西门子S7-200 CPU226水质监控程序,程序采用子程序调用,程序结构清晰,需要的可以或者联系,另送触摸屏程序,昆仑通态的触摸屏 ,S7-200 CPU226; 监控程序; 程序调用; 程序结构; 昆仑通态触摸屏程序; 通讯需求; 接触使用信息。,西门子S7-200 CPU226水质监控程序解析:清晰子程序调用结构,配昆仑通态触摸屏

    异步电机的矢量控制模型,异步电动机SVPWM的matlab仿真 simulink仿真_simulink仿真_异步电机矢量控制

    异步电机的矢量控制模型是现代电力驱动技术中的一个重要组成部分,它在工业自动化和电力传动领域广泛应用。矢量控制理论借鉴了直流电机的工作原理,通过坐标变换将三相交流异步电机的定子电流分解为磁场定向的直轴分量(d轴)和转矩分量(q轴),从而实现对电机的精确控制,如同控制直流电机一样。 SVPWM(Space Vector Pulse Width Modulation,空间矢量脉宽调制)是一种高效的PWM调制技术,其目的是在给定的开关频率下最大限度地提高逆变器的利用率和电机性能。SVPWM技术通过优化逆变器的开关状态,使得输出电压矢量接近理想的正弦波形,从而减小谐波含量,提高电机效率和动态性能。 在MATLAB的Simulink环境中,可以构建一个完整的异步电机矢量控制的仿真模型。Simulink是一个图形化建模工具,用于系统级的动态系统建模和仿真。在这个模型中,我们可以包括以下几个关键模块: 1. **电机模型**:这通常是一个基于异步电机的电磁场方程的模型,包括定子电流、转子速度和电磁转矩之间的关系。 2. **坐标变换模块**:使用Park变换(Clark和Park变换)将三相电流转换为

    HDMI输出彩条实验-基于MicroPhase公司Mizar 开发教程 Xilinx ZYNQ7000 FPGA

    HDMI输出彩条实验-基于MicroPhase公司Mizar 开发教程 Xilinx ZYNQ7000 FPGA

    工业运营前沿技术2025:AI智能体助力自主控制系统

    内容概要:这份由世界经济论坛和波士顿咨询集团合作发布的白皮书,探讨了AI智能体技术在工业运营中的应用前景。白皮书重点介绍了两种AI智能体——虚拟AI智能体和具身AI智能体。虚拟AI智能体用于管理和自动化数字任务,而具身AI智能体则将人工智能应用于机器人的操作中,实现对物理系统的控制。文中详细论述了这两类AI智能体的应用场景和潜力,以及它们对企业提高效率、降低成本和提升创新能力的积极作用。此外,白皮书还讨论了引入AI智能体时面临的组织与技术挑战,提出了相应的解决方案。文中展示了多家企业的成功用例,如全球性酿酒商和电子制造巨头的案例研究,这些案例显示AI智能体的应用提高了产品质量,缩短了生产时间和成本节约效果。 适合人群:工业制造及相关领域的管理人员、技术人员和政策制定者。 使用场景及目标:帮助制造业和供应链行业更好地利用AI智能体技术实现生产自动化,优化资源配置,推动可持续发展目标,从而在全球市场竞争中占据有利位置。 其他说明:白皮书呼吁行业内外的合作,强调法规遵从性和道德考量的重要性。同时指出虽然目前的试点工作取得了积极进展,但仍需继续深入研究和发展,以确保这项技术的广泛应用能够顺利进

    深度学习Python项目:基于VGG19、DenseNet121和ResNeXt101的垃圾图像分类识别系统-数据集、PPT文档与代码集萃,深度探索:VGG19、DenseNet121与ResNeX

    深度学习Python项目:基于VGG19、DenseNet121和ResNeXt101的垃圾图像分类识别系统——数据集、PPT文档与代码集萃,深度探索:VGG19、DenseNet121与ResNeXt101在垃圾图像分类识别Python项目中的实践与应用——全面解析数据集、PPT文档与代码,深度学习python项目--垃圾图像分类识别 关键模型:VGG19DenseNet121ResNeXt101 包含内容:数据集ppt文档代码 ,深度学习;Python项目;垃圾图像分类识别;关键模型:VGG19;DenseNet121;ResNeXt101;数据集;ppt文档;代码,深度学习图像分类项目--基于VGG、DenseNet及ResNeXt模型的项目包含数据集与开发资料

Global site tag (gtag.js) - Google Analytics