XML解析总结

1:XML和javaBean之间的映射

只要总结了两种方式:

1.1:XMap

the third support : nuxeo-common-5.4.3.jar(latest)

主要的操作对象:

org.nuxeo.common.xmap.XMap;

用法示例:

        List<UPCallcenterMenuTab> menuList = null;
        XMap xmap = new XMap();
        xmap.register(UPCallcenterMenuTabList.class);
        InputStream in = new FileInputStream(new File(filePath));
        Object[] result = (Object[]) xmap.loadAll(in);
        UPCallcenterMenuTabList menuTabList = (UPCallcenterMenuTabList) result[0];
        menuList = menuTabList.getMenuList();

1.2:XStream

the third support :xstream-1.4.1.jar

主要的操作对象:

com.thoughtworks.xstream.XStream

用法示例:

/****
     * read operation
     *
     * @param filePath
     *            :specified file path
     * @throws IOException
     */
    @SuppressWarnings("unchecked")
    private static List<UPCallcenterMenuTab> convertXMLToList(String filePath)            {
        List<UPCallcenterMenuTab> menuList = null;
        if (StringUtils.isEmpty(filePath) || StringUtils.isBlank(filePath)) {
            throw new NullPointerException("filePath is invalid!");
        }
        // 1:XStream instance
        XStream xstream = new XStream();
        xstream.alias("menus", List.class);
        xstream.alias("menu", UPCallcenterMenuTab.class);
        // 2:used to read bytes from file
        //FileReader fr = new FileReader(filePath);
         InputStreamReader reader = null;
        try {
            reader = new InputStreamReader(new FileInputStream(filePath),"UTF-8");
        } catch (UnsupportedEncodingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        // buffer reader
        BufferedReader br = new BufferedReader(reader);
        // 3:construct ObjcetInputStream instance
        // ObjectInputStream ois = xstream.createObjectInputStream(br);

        // 4: read data using reader
        try {
            menuList = (List<UPCallcenterMenuTab>) xstream.fromXML(br);
            // menuList = (List<UPCallcenterMenuTab>)ois.readObject();
            // } catch (ClassNotFoundException e) {
        } catch (Exception e) {
            // TODO Auto-generated catch block
            logger.info("Excetpion ocurred when converting xml data to object");
            logger.info(e.getMessage(),e);
            //throw e;
        }

        return menuList;
    }

1:3:XMLConfiguration

the third support:  commons-configuration-1.3.jar

主要的操作类:org.apache.commons.configuration

用法示例:

public final class Configuration {
    private static Logger log = Logger.getLogger(Configuration.class);
    private static Configuration configuration;
   
    private XMLConfiguration config;
   
    private Configuration(){
        try{
            config = new XMLConfiguration();
            config.setDelimiterParsingDisabled(true);           
            config.load("lokosuite.cfg.xml");

        }catch(Exception e){
            log.error(this,e);
        }
    }
   
    public static Configuration getInstance(){
        if(configuration == null){
            configuration = new Configuration();
        }
        return configuration;
    }
   
    public String getString(String key){
        return config.getString(key);
    }
   
    public static void main(String[] args) throws Exception{
        String text= Configuration.getInstance().getString("membership.active-text");
        System.out.println(Configuration.getInstance().getString("shopping.transSuccess-text"));
        System.out.println(Configuration.getInstance().getString("membership.active-subject"));
        System.out.println(StringUtils.replace(text,"{activate-url}","adfasdf"));
        System.out.println(Configuration.getInstance().getString("core.version"));
       
       
    }
}

继续:

1.4:xml文件和xml字符串之间的转换

<操作前:dom4j-1-6-1.jar 和 jaxen-1.1-beta-6.jar是必须的;附件中有这两个jar包>

/**
         * 在运行操作xpath的程序中 添加jaxen-1.1-beta-6.jar
         * 以防抛java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常
 */

1.4.1:xml文件转换为xml字符串

String xmlFileName = "你的文件绝对路径";

SAXReader  reader = new SAXReader();

FileInputStream fileInputStream = new FileInputStream(xmlFileName );

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(fileInputStream ,"UTF-8"));

Document document = reader.read(bufferReader);

 

String xmlString = document.asXML();

1.4.2:xml字符串转换为xml文件

 

String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><book>text</book>";

 

SAXReader reader = new SAXReader(false);
reader.setEncoding("UTF-8");
        try {
            ByteArrayInputStream byteStream = new ByteArrayInputStream(xmlString.getBytes());
       
            Document document = reader.read(byteStream);

            String fullFileName = "你要生成的完整的xml文件路径";

            File newFile = new File(fullFileName );
            Writer writer = new FileWriter(newFile);
           // 格式化输出
          OutputFormat format = OutputFormat.createPrettyPrint();

          // 设置编码
          format.setEncoding("UTF-8");

          XMLWriter xmlWriter = new XMLWriter(writer, format);


           // String xPathString = "//book";
           // Element element = (Element)document.selectSingleNode(xPathString);


           // System.err.println(element.getText());


        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

/********************************************************暂时告一段落!********************************************************/

待续。。。

 

XMAP 教程(很难下载到的) 用来解析xml的第三方工具,非常方便,java语言的 立即下载

相关推荐

字节跳动程序媛教你如何刷算法题:面试手撕代码我就没怕过

本人上一次刷题还是大一的C语言期末考试……但是面试中算法考核截止上岸前一直保持着100%正确率的光辉记录。 本文将给你指明一条刷题的决胜指南。并从算法的重要性、题库的选择以及刷题的三大步骤分别进行讲解,彻底解决你所有关于面试算法所有的困扰。

Stay Hungry Stay Foolish 求知若饥 虚心若愚 2万+

jar包org.nuxeo.common下载地址

<br /><br />版权声明:转载时请以超链接形式标明文章原始出处和作者信息:<br />jar包org.nuxeo.common下载地址:http://blog.lifangeye.info/?p=400<br />    以前在公司的时候用xmap来解析xml,感觉它相当犀利,能通过注解就直接得到一个Java Bean<br />    后来找了半天这个jar包,org.nuxeo.common.xmap,却没有找到下载方式<br />    今天总算是搞定了,跑到nuxeo的mvn库上找,其实去各

liliflashfly的专栏 5786

TensorRT-LLM环境配置避坑指南:从安装到实战

本文是一份详尽的TensorRT-LLM环境配置避坑指南。文章重点解析了从Python、CUDA、PyTorch版本选择,到解决mpi4py安装这一核心难题的完整流程,并提供了经过验证的稳定版本组合与实战排错方案,帮助开发者高效部署大语言模型推理优化环境。

a0b1c2d3的专栏 985

java xmap_使用XMAP完成JavaBean和XML之间转换

XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和JavaBean的互相转换。最近项目中用到了xml和java bean的转换用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml...

weixin_39814093的博客 300

【论文速读】MLDT:基于开源大语言模型的复杂长时机器人任务规划多层次分解方法

—在数据驱动的人工智能技术领域,开源大语言模型(LLMs)在机器人任务规划中的应用是一个重要的里程碑。近期基于开源大语言模型的机器人任务规划方法通常利用大量的任务规划数据集来提升模型的规划能力。虽然这些方法展现出了一定的前景,但它们在处理复杂长时任务时存在困难,因为这类任务需要理解更多的上下文信息并生成更长的动作序列。本文提出多层次分解任务规划方法(MLDT)来解决这一局限性。该方法创新性地在目标级、任务级和动作级对任务进行分解,以应对复杂长时任务带来的挑战。

muyulingfengye的博客 1647

开源ISP介绍(1)——开源ISP的Vivado框架搭建

ZYNQ视频图像处理系统,ISP图像处理硬件实现

路漫漫其修远兮,吾将上下而求索 3292

使用XMAP完成JavaBean和XML之间转换

XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和Java Bean的互相转换。最近项目中用到了xml和java bean的转换用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好我们能不能直接从xml转化到java bean呢,或者直接成java bean转...

weixin_30276935的博客 200

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1845

XML解析

一,XML概述 1.什么是XML XML即为可扩展的标记语言(eXtensible Markup Language) XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题,而HTML侧重描述文本的显示格式。 XML文档数据和格式分离,文档=文档数据+文档结构+文档样式

2302_80464795的博客 1337

AI测试干货:让大语言模型稳定输出 JSON 的四种实现方案

用大语言模型做测试用例生成、数据提取时,最头疼的就是让它老老实实返回 JSON。你以为它会给你 `{"name":"张三"}`,结果它来一句"好的,这是生成结果:```json...",或者干脆在 JSON 里加注释,直接把你的 `json.loads()` 干崩溃。 模型本质上是个话痨,天生爱解释。但我们要的是结构化数据,不是聊天记录。我整理了四种实战方案,从最简单的提示词技巧到工程化框架,覆盖了从快速验证到生产环境的各种场景。

blues_C的博客 957

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2585

C++解析XML文件

C++读取XML文件

StarWang的博客 1万+

基于PChmi.dll的PLC报警显示和记录(C#)

本文介绍了如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。通过订阅PLC的报警事件,我们可以实时显示报警信息,并通过日志文件记录报警历史。PLC(可编程逻辑控制器)在工业自动化领域中扮演着重要的角色,而报警显示和记录是PLC应用中常见的需求。本文将介绍如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。当然,这只是实现报警显示和记录的基本框架,具体的实现方式可能因不同的PLC和HMI库而有所差异。你需要根据你所使用的具体库和设备进行相应的调整和修改。

ByteLegend的博客 1673

什么是xml解析?xml解析的有几种常用的解析方式?

SAX解析只能查询,不能实现增删方法,不常用,这里就不过得介绍了

superliug的博客 6151

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python解析xml

你需要。

weixin_45365818的博客 4883

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

XML解析——Java中XML的四种解析方式

XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。   XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。   针对以下XML文件,会对四种方式进行详细描述: <?xml version="1.0

qq_37272886的博客 4202

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python XML 解析

XML 指可扩展标记语言(eXtensibleMarkupLanguage)。你可以通过本站学习XML 教程XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。Python 对 XML 的解析常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。characters(content)方法。

qq_48368964的博客 1935

XML解析(一),SAX解析XML

一、概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOC解析,PULL解析(Android特有),SAX与DOC不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点,对于Android等CPU资源宝贵的移动平台来说是一个巨大的优势。 SAX的优点:解析速

宿罪的博客 3万+

XML 解析

一、五种解析方法 1、DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准【优点】 ①允许应用程序对数据和结构做出更改。 ②访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据。【缺点】 ①通常需要加载整个XML文档来构造层次结构,消耗资源大。【解析详解】 ①构建Document对象: DocumentBuild...

qq_30436011的博客 5044

perl 解析xml_使用Perl的高级XML解析技术

对于种类繁多的Perl应用程序,选择的XML工具是XML::Simple ,这是本系列第1部分的主题(请参阅参考资料 )。 XML::Simple将XML输入文件转换为易于操作的Perl数据结构,并将这些数据结构写回XML。 但是请记住,这种方法在某些情况下不起作用。 当您需要在内存中构建XML文档的表示形式,然后以相当复杂或不可预测的方式搜索或转换XML文档时, XML::Simple并...

cuyi7076的博客 2305

php怎么解析xml,php解析xml方法实例详解

本文以实例形式详细讲述了php解析xml方法。分享给大家供大家参考。具体分析如下:books.xml文件如下:Harry PotterJ K. Rowling200529.99Everyday ItalianGiada De Laurentiis200530.00Learning XMLErik T. Ray200339.951、DOM解析XML//创建一个DOMDocument对象$doc=ne...

weixin_34135180的博客 2844

java解析XML

概念:x(extensible)可扩展的 M(markup)标记/节点 L(language)语言 -->可扩展的标记语言. 一、XML语言的作用 1、存:特殊的文件,单级游戏里的等级和装备存到XML文件中 2、传:网络上传递数据 3、配置文件 二、XML文件的特点 跨平台性 多语言都支持XML语言 XML具有自我描述性:所有节点(元素)自定义 三、XML的语法规则 要有根节点,只能有一个 节点要有开始和结束<节点名...

asddasddeedd的博客 3923
上一篇: iframe使用总结
下一篇: jackson 更高的操作的效率
programloverjack
博客等级 码龄17年 5粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值