「xml格式化java」XML格式化数据单元

博主:adminadmin 2022-11-27 11:03:07 60

本篇文章给大家谈谈xml格式化java,以及XML格式化数据单元对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何把xml内容转换为java格式

使用XStream完成 java 类与 XML 互换。

下面代码实现了以下4种基本功能:

1. object类型转换为xml类型,在控制台打印

2. xml类型转换为object类型,在控制台打印

3. 将object类型转换为xml类型,并写入XML文件

4. 读取XML文件,加载进相应Object类型

====================================================

1。加载 XStream 需要的jar包 xstream-1.4.2.jar

xpp3_min-1.1.4c.jar

xmlpull-1.1.3.1.jar

2。创建实体类User.java

package com.entity;

/**

* 实体类

*/

public class User {

private String userName;

private String passWord;

private String registeredTime;

public User() { }

public User(String userName, String passWord, String registeredTime) {

this.userName = userName;

this.passWord = passWord;

this.registeredTime = registeredTime;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassWord() {

return passWord;

}

public void setPassWord(String passWord) {

this.passWord = passWord;

}

public String getRegisteredTime() {

return registeredTime;

}

public void setRegisteredTime(String registeredTime) {

this.registeredTime = registeredTime;

}

}

3。编写功能实现类

package com.switcher;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import com.entity.User;

import com.thoughtworks.xstream.XStream;

/**

*

* 使用 XStream不用任何映射就能实现多数 Java 对象的序列化。

* 在生成的 XML中对象名变成了元素名,类中的字符串组成了 XML中的元素内容。

* 使用 XStream 序列化的类不需要实现 Serializable 接口。

* XStream 是一种序列化工具而不是数据绑定工具

* 不能从XML 或者 XML Schema Definition (XSD) 文件生成类。

*/

public class SwitchXML {

/*

* XStream 不关心序列化/逆序列化的类的字段的可见性。

* 序列化/逆序列化类的字段不需要 getter 和 setter 方法。

* 序列化/逆序列化的类不需要有默认构造函数。

*/

private XStream xStream = new XStream();

private String xmlPath = "D:/userdata.xml";

// 1. obj - xml(object类型转换为xml类型)

public String printXML(User user) {

System.out.println("obj - xml");

String xml = xStream.toXML(user);

System.out.println(xml);

return xml;

}

// 2. xml-obj(xml类型转换为object类型,并打印)

public void printObj(String xml) {

System.out.println("xml - obj");

User u = (User) xStream.fromXML(xml);

System.out.println(u.getUserName() + " " + u.getPassWord() + " " + u.getRegisteredTime());

}

// 3. 将object类型转换为xml类型,并写入XML文件(其他格式也可以,比如txt文件)

public void writerXML(User user) {

try {

FileOutputStream fs = new FileOutputStream(xmlPath);

xStream.toXML(user, fs);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

// 4. 读取XML文件,加载进相应Object类型

public void readerXML() {

User user = new User();

FileInputStream fis = null;

try {

fis = new FileInputStream(xmlPath);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

xStream.fromXML(fis, user);

// 打印对象信息

System.out.println(user.toString());

// 打印对象的属性值

System.out.println(user.getUserName() + "-" + user.getPassWord() + "-"

+ user.getRegisteredTime());

}

public static void main(String[] args) {

// 用户名

String username = "admin";

// 密码

String password = "admin";

// 注册时间

Date now = new Date();

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");

String registeredtime = format.format(now);

User user = new User(username, password, registeredtime);

SwitchXML switchXML = new SwitchXML();

// 1. object类型转换为xml类型,在控制台打印

String xml = switchXML.printXML(user);

System.out.println("---------------------");

// 2. xml类型转换为object类型,在控制台打印

switchXML.printObj(xml);

System.out.println("---------------------");

// 3. 将object类型转换为xml类型,并写入XML文件

switchXML.writerXML(user);

System.out.println("---------------------");

// 4. 读取XML文件,加载进相应Object类型

switchXML.readerXML();

}

}

如何将xml文件转变成java对象

首先 java是面向对象的编程语言,所以你要理解面向对象的思想。在这个前提下我们可以理解 文件 本身就是java的对象File,而xml只是File类中对象的一种实例。你可以创建一个File 把你的xml的路径传入这个对象的有参构造,这样就实例化了一个xml文件类的对象

xml怎么转为java对象,急啊!!!!在线等

要自己解析啊,

把xml文本加载进来,一层一层的解析,然后

A a = new A();

a...=...;

JAVA 生成xml格式,具体格式如下,请问JAVA方法怎么写

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import org.w3c.dom.*;

import org.xml.sax.SAXException;

import javax.xml.parsers.*;

import javax.xml.transform.*;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.*;

import javax.xml.xpath.*;

public class Test {

public static void main(String[] args) {

        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

        Element theBook=null, theElem=null, root=null;

        try {

            factory.setIgnoringElementContentWhitespace(true);

            

            DocumentBuilder db=factory.newDocumentBuilder();

            Document xmldoc=db.parse(new File("Test1.xml"));

            root=xmldoc.getDocumentElement();

            

            theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root);

            System.out.println("--- 查询找《哈里波特》 ----");

            Element nameNode=(Element)theBook.getElementsByTagName("price").item(0); 

            String name=nameNode.getFirstChild().getNodeValue(); 

            System.out.println(name);

            output(theBook);

            System.out.println("=============selectSingleNode(books/book[name='哈里波特'], root)==================");

            

            //--- 新建一本书开始 ----

            theBook=xmldoc.createElement("book");

            theElem=xmldoc.createElement("name");

            theElem.setTextContent("新书");

            theBook.appendChild(theElem);

            

            theElem=xmldoc.createElement("price");

            theElem.setTextContent("20");

            theBook.appendChild(theElem);

            theElem=xmldoc.createElement("memo");

            theElem.setTextContent("新书的更好看。");

            theBook.appendChild(theElem);

            root.appendChild(theBook);

            System.out.println("--- 新建一本书开始 ----");

            output(xmldoc);

            System.out.println("==============================");

            

            //--- 新建一本书完成 ----

            //--- 下面对《哈里波特》做一些修改。 ----

            //--- 查询找《哈里波特》----

           

            //--- 此时修改这本书的价格 -----

            theBook.getElementsByTagName("price").item(0).setTextContent("15");//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相当于xpath的".//price"。

            System.out.println("--- 此时修改这本书的价格 ----");

            output(theBook);

            //--- 另外还想加一个属性id,值为B01 ----

            theBook.setAttribute("id", "B01");

            System.out.println("--- 另外还想加一个属性id,值为B01 ----");

            output(theBook);

            //--- 对《哈里波特》修改完成。 ----

            //--- 要用id属性删除《三国演义》这本书 ----

            theBook=(Element) selectSingleNode("/books/book[@id='B02']", root);

            System.out.println("--- 要用id属性删除《三国演义》这本书 ----");

            output(theBook);

            theBook.getParentNode().removeChild(theBook);

            System.out.println("--- 删除后的XML ----");

            output(xmldoc);

            //--- 再将所有价格低于10的书删除 ----

            NodeList someBooks=selectNodes("/books/book[price10]", root);

            System.out.println("--- 再将所有价格低于10的书删除 ---");

            System.out.println("--- 符合条件的书有 "+someBooks.getLength()+"本。 ---");

            for(int i=0;isomeBooks.getLength();i++) {

                someBooks.item(i).getParentNode().removeChild(someBooks.item(i));

            }

            output(xmldoc);

            saveXml("Test1_Edited.xml", xmldoc);

        } catch (ParserConfigurationException e) {

            e.printStackTrace();

        } catch (SAXException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void output(Node node) {//将node的XML字符串输出到控制台

        TransformerFactory transFactory=TransformerFactory.newInstance();

        try {

            Transformer transformer = transFactory.newTransformer();

            transformer.setOutputProperty("encoding", "gb2312");

            transformer.setOutputProperty("indent", "yes");

            DOMSource source=new DOMSource();

            source.setNode(node);

            StreamResult result=new StreamResult();

            result.setOutputStream(System.out);

            

            transformer.transform(source, result);

        } catch (TransformerConfigurationException e) {

            e.printStackTrace();

        } catch (TransformerException e) {

            e.printStackTrace();

        }   

    }

    

    public static Node selectSingleNode(String express, Object source) {//查找节点,并返回第一个符合条件节点

        Node result=null;

        XPathFactory xpathFactory=XPathFactory.newInstance();

        XPath xpath=xpathFactory.newXPath();

        try {

            result=(Node) xpath.evaluate(express, source, XPathConstants.NODE);

        } catch (XPathExpressionException e) {

            e.printStackTrace();

        }

        

        return result;

    }

    

    public static NodeList selectNodes(String express, Object source) {//查找节点,返回符合条件的节点集。

        NodeList result=null;

        XPathFactory xpathFactory=XPathFactory.newInstance();

        XPath xpath=xpathFactory.newXPath();

        try {

            result=(NodeList) xpath.evaluate(express, source, XPathConstants.NODESET);

        } catch (XPathExpressionException e) {

            e.printStackTrace();

        }

        

        return result;

    }

    

    public static void saveXml(String fileName, Document doc) {//将Document输出到文件

        TransformerFactory transFactory=TransformerFactory.newInstance();

        try {

            Transformer transformer = transFactory.newTransformer();

            transformer.setOutputProperty("indent", "yes");

            DOMSource source=new DOMSource();

            source.setNode(doc);

            StreamResult result=new StreamResult();

            result.setOutputStream(new FileOutputStream(fileName));

            

            transformer.transform(source, result);

        } catch (TransformerConfigurationException e) {

            e.printStackTrace();

        } catch (TransformerException e) {

            e.printStackTrace();

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        }   

    }

}

 

XML:

?xml version="1.0" encoding="GBK"?

books

book

name哈里波特/name

price10/price

memo这是一本很好看的书。/memo

/book

book id="B02"

name三国演义/name

price10/price

memo四大名著之一。/memo

/book

book id="B03"

name水浒/name

price6/price

memo四大名著之一。/memo

/book

book id="B04"

name红楼/name

price5/price

memo四大名著之一。/memo

/book

/books

java中如何写xml

呵呵,你这个问题,其实写XML很简单的,氛围以下几步:1.导入DOM4J包,在此我使用dom4j来做。2.创建dom4j的实例:Document document = DocumentHelper.createDocument();3.一级一级的添加节点或者属性,这个具体参照dom4j帮助:Element rootGen = document.addElement("root");4.定义以下3个对象,然后进行操作: Writer writer = null;

OutputFormat format = null;

XMLWriter xmlwriter = null; ***********************************************************************************附上代码: public void CreateXMl(StudentBean sn){

//创建document对象

Document document = DocumentHelper.createDocument();

//定义根节点Element

Element rootGen = document.addElement("root");

//定义根节点ROOT的子节点们

Element nameGen = rootGen.addElement("Name");

nameGen.addAttribute("name", "我是中文");

Element ageGen = rootGen.addElement("Age");

Element addrGen = rootGen.addElement("Address");

Writer writer = null;

OutputFormat format = null;

XMLWriter xmlwriter = null;

//将定义好的内容写入xml文件中

try {

//使用这个writer也可以,只不过遇到中文会乱码哦

// writer = new FileWriter("d:/test.xml");

//进行格式化

format = OutputFormat.createPrettyPrint();

//设定编码

format.setEncoding("UTF-8");

xmlwriter = new XMLWriter(new FileOutputStream("d:/test.xml"), format);

xmlwriter.write(document);

xmlwriter.flush();

xmlwriter.close();

System.out.println("-----------Xmlfile successfully created-------------");

} catch (Exception e) {

e.printStackTrace();

System.out.println("-----------Exception occured during of create xmlfile -------");

}

}

100分求高手帮我将xml文件转为java类

奋斗了20个小时,终于完成了,本类无需导入任何额外的包,底层细节全部在本类中完成!

说明,本类通过读入xml文件,并把信息正确分成存入到Guird列表中。通过调用getGuirdList()将返回结果集。要使用其中的某一项,只接到对象中用方法获取即可,希望能够满足楼主的需求!!

TransXml.java

import java.io.*;

import java.util.Vector;

import java.util.Scanner;

import java.io.InputStreamReader;

import java.util.LinkedList;

public class TransXml{

private String xmlAddress;

private VectorGuird guir;//表示一级子目录下的Guird向量

private FileInputStream inStr;

private InputStreamReader inRea;

private int whLayer=0;//标志表的层次,为0表示根表,为1表示第一层子表

private int whiLab=0;//表示当前标签是第几层

boolean isend=false;

boolean isguirs=false;

boolean isguir=false;

StringBuffer str=new StringBuffer();//表示中的词

String strVul;

StringBuffer value=new StringBuffer();//表示具体类容

boolean isWorld=false;

boolean isValue=false;

boolean isSubgu=false;

boolean notEnd=true;

LinkedListGuird linList;

public TransXml(){

}

public TransXml(String xmlAdd){

guir=new VectorGuird();

linList=new LinkedListGuird();

this.xmlAddress=xmlAdd;

System.out.println("开始读取xml文件");

try{

inStr=new FileInputStream(xmlAddress);

inRea=new InputStreamReader(inStr);

}catch(IOException e){

System.out.println("Xml文件地址无效");

}

System.out.println("开始读取xml文件完成!");

Translate();

}

public void Translate(){

Guird theGu=new Guird();

while(notEnd)

{

int tt=-1;

try{

tt=inRea.read();

}catch(IOException e){

System.out.println("字符读取失败!");

}

if(tt==-1){//文件已经读完了

notEnd=false;

break;

}

char ch=(char)tt;

if(ch==''){

//说明,前面如果有类容的话,内容完结

isValue=false;//说明内容已经完了

isWorld=true;//表示下面是里德内容

}

if(ch==''){

isWorld=false;//表示括号内的字符串结束了

strVul=str.toString();//表示当前的目录层次

if(strVul.equalsIgnoreCase("guirds")){//这是配置文件正式开始的标志

isguirs=true;

}else if(strVul.equalsIgnoreCase("guird")){//说明已经进入guird类

isguir=true;

}else if(strVul.equalsIgnoreCase("id")){//进入id属性

isValue=true;

}else if(strVul.equalsIgnoreCase("name")){//进入name属性

isValue=true;

}else if(strVul.equalsIgnoreCase("ename")){//进入ename属性

isValue=true;

}else if(strVul.equalsIgnoreCase("parentid")){//进入parentid属性

isValue=true;

}else if(strVul.equalsIgnoreCase("subguirds")){//进入subguirds属性,说明它还有一个字表

isSubgu=true;

linList.addLast(theGu);//做入栈操作,添加到结尾

whLayer++;//原始的值为0,它表示当前操作guird的级数

//那么下面的读取将是新的Guird类,所以要把现在的theGu保存后重新初始化

theGu=new Guird();//初始化,后面接着用

}else if(strVul.equalsIgnoreCase("/guirds")){//这是配置文件结束的标志

isguirs=false;//程序已经阅读完毕XML文件

notEnd=false;

}else if(strVul.equalsIgnoreCase("/guird")){//说明已经结束guird类

isguir=false;//说明一条记录已经完成,所以要对其存储

//theGu的属性是在/标签前就写入完毕了,那么应该写入上级目录中,

//如果是定定及目录,则直接写入给定的Vector

if(whLayer0){//说明还不是根目录

Guird tempguir=linList.getLast();

VectorGuird tempqq=(Vector)tempguir.getSubGuird();

if(tempqq==null){//说明前面的集合为空

tempqq=new Vector();

}

tempqq.add(theGu);//集合中增加这一项

tempguir.setSubGuird(tempqq);

linList.removeLast();//移动原来的换新的内容

linList.add(tempguir);

theGu=new Guird();//重新初始化供后面使用,并不要去改变whLayer值

}else if(whLayer==0){//这说明当前的theGu是指1级子目录,

guir.add(theGu);//添加一条记录到Vector

theGu=new Guird();// 重新初始化以便下次正确用到

}else{

System.out.println("xml文件标签错误!");

notEnd=false;

}

}else if(strVul.equalsIgnoreCase("/id")){//结束id属性

isValue=false;

theGu.setId(new Integer(value.toString()));

value=new StringBuffer();

}else if(strVul.equalsIgnoreCase("/name")){//结束name属性

isValue=false;

theGu.setName(value.toString());

// System.out.println("这里写入的名字是:"+theGu.getName());

value=new StringBuffer();

}else if(strVul.equalsIgnoreCase("/ename")){//结束ename属性

isValue=false;

theGu.setEname(value.toString());

value=new StringBuffer();

}else if(strVul.equalsIgnoreCase("/parentid")){//结束parentid属性

isValue=false;

theGu.setParentId(new Integer(value.toString()));

value=new StringBuffer();

}else if(strVul.equalsIgnoreCase("/subguirds")){//结束subguirds属性,字表完成

isSubgu=false;

//刚刚结束的这个Guird就是whLayer级子目录

//要判断是根类还是那一级子目录

whLayer--;//表示上一级目录

if(whLayer0){

theGu=linList.getLast();//成为当前节点

//所以当前操作对象又将是刚从LinkedListed中取出的那个

linList.removeLast();//已经用过了,最后一个移除,相当于退栈

}

else if(whLayer==0){//根节点下

theGu=linList.getLast();

linList.removeLast();

}else{

notEnd=false;//因为whLayer不可能小于0

System.out.println(xmlAddress+"标签不完整!请检查!");

break;

}

}

strVul="";

str=new StringBuffer();//重新初始化,准备后面使用

}

if(isWorld==true){

if((char)tt!=''(char)tt!='')//因为具有延时性所以要增加这个条件

if(tt!=32tt!=9)//它不为空格和Tab,即在xml中标签内的内容将忽略Tab和空格

str.append((char)tt);

}

if(isValue==true){//当前是类容属性值

if((char)tt!=''(char)tt!=''){

if(tt!=32tt!=9)//它不为空格和Tab

value.append((char)tt);

}

}

/**

* 为什么这里注释掉了,因为前面以当发现value值取到最后一位后就设置isValue为false

* 但是要当下一个/结尾标签完才会调用value值并进行操作,所以,value不能立刻变为空内容

* 那么当它被使用后,采设置新的对象是可取的

* else{

* value=new StringBuffer();//避免干扰下次

* }

*/

}

try{

inRea.close();

inStr.close();

}catch(IOException e){

System.out.println("流关闭失败!");

}

}

public Vector getGuirdList(){

return this.guir;//获得最终的子目录列表

}

/**

* 原来写的main方法进行测试,在这里就省略了

*/

}

Xml文件中guirds标签中,有几对guird标签就会返回几条结果,当然guird是指在guirds目录下的第一层标签,而其他的二级guird标签中的内容则存在相应的ListGuird subGuird中。

That's all !

关于xml格式化java和XML格式化数据单元的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。