解析xml文件,如何动态的封装成一个java类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析xml文件,如何动态的封装成一个java类相关的知识,希望对你有一定的参考价值。

要看你的xml文件是什么格式,可以针对某个结构的xml文件封装一个解析类

如果不依赖xml文件的格式,只是封装操作xml的方法,这个网上一大堆,用dom4j或jdom都可以
参考技术A 用java反射

如何根据xml和schema文件生成java类(用程序实现)!

1:传递过来的xml为string类型的一个串。
2:schema作用是:(用于验证xml是否符合自定义的规范:如长度)
3:验证通过之后,需要进行根据xml的值赋给生成的java类。
程序急用!大神帮忙写个demo!!

验证应该好写吧,主要是解析xml

可以使用工具包dom4j

类似例子

dom4j参见http://javacrazyer.iteye.com/blog/727298

    public static void readXML() throws DocumentException 
        SAXReader sr = new SAXReader();// 获取读取xml的对象。
        Document doc = sr.read("src/com/pzr/test/zhidao/test.xml");// 得到xml所在位置。然后开始读取。并将数据放入doc中
        Element el_root = doc.getRootElement();// 向外取数据,获取xml的根节点。
        Iterator it = el_root.elementIterator();// 从根节点下依次遍历,获取根节点下所有子节点

        while (it.hasNext()) // 遍历该子节点
            Object o = it.next();// 再获取该子节点下的子节点
            Element el_row = (Element) o;
            String s = el_row.getText();
            Iterator it_row = el_row.elementIterator();
            while (it_row.hasNext()) // 遍历节点
                Element el_ename = (Element) it_row.next();// 获取该节点下的所有数据。
                System.out.println(el_ename.getText());
            
        
    

追问

主要是生成java类这里。不是解析。如何将一个验证过的xml或者生成java类!这是我不会的地方!

追答

Java类是动态生成的吗还是已经有一个Java类来接xml中的值

追问

就是我这个java类,不自己写,需要动态生成,然后还可以接受这个xml传递过来的值。

追答

哦,明白了,动态生成类的话没实现过,不知道反射能实现不,如果xml的格式定死的话,建议建一个实际类来装解析的数据

追问

你说的这个模式就是我现在程序的设计模式,现需要增加一个验证传递过来的xml中的值长度以及一些其他验证性的功能。不符合就不继续操作了。而人家传递过来的肯定是xml。所以需要schema验证,改变我这个系统的原有设计模式。并且原来写的javabean需要动态生成且赋值,而不是自己写的了!

追答

表示技穷了,坐等楼下,抱歉啊。

追问

依然感谢您!我也在研究,嘿嘿!

追答

刚刚看了下,要动态建立JavaBean的话需要IO流生成Java文件,然后调用Javac编译,最后使用反射将类加载,这样就可以使用了。
貌似可行的方法,可以试试
可以看看这个,好像和你类似的问题http://bbs.csdn.net/topics/360001205

参考技术A JAXB提供了可以从schema生成java类,下面简要介绍一下生成的步骤:
1:下载jaxb包 jaxb 2_1_9.zip ,在本博客中可以下载得到。解压后得到四个目录,包含bin、lib 、docs、example
2:在"cmd"里进入到bin目录,如C:/>cd C:/jaxb2.1.9/bin 回车
3:输入xjc c:/students.xsd -d c:/src -p com.entity 回车
注:-d 说明要生成的java类存放目录
-p 为生成java类指定的包名
students.xsd 为自己定义的Schema
参考技术B jdk自带的xjc可以从schema生成java类

以上是关于解析xml文件,如何动态的封装成一个java类的主要内容,如果未能解决你的问题,请参考以下文章

如何根据xml和schema文件生成java类(用程序实现)!

java解析xml文件,会把节点属性中的换行转换成空格,怎样才能避免此类转换,即保留换行

基于DOM的XML文件解析类

mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)

sax解析xml文件,封装到对象中

Java web——xml文件读取的解析方式(DOM和SAX)