字符串在java类中怎么转换成xml文件
这个问题很常见
就是java解析xml的问题,应用很多
解析主要有2种模式
1、DOM解析,这里里面包括JDOM,DOM4J等等,解析的思想类似,化为一类,这类解析思路清晰明白,元素读取直观,缺点是对大型xml文件解析会发生内存溢出错误,因为这类解析占用内存较高
2、SAX解析,此解析方法的思想是把xml看成文本读取入内存,然后以为事件触发模式检索元素信息,所以解析占用内存不高,适合大xml文档的解析
具体解析楼主随便找个例子看看就会了,比较简单
public static String do_post(String url, List name_value_pair) throws IOException { String body = "{}"; DefaultHttpClient httpclient = new DefaultHttpClient(); try { HttpPost httpost = new HttpPost(url); httpost.setEntity(new UrlEncodedFormEntity(name_value_pair, StandardCharsets.UTF_8)); HttpResponse response = httpclient.execute(httpost); HttpEntity entity = response.getEntity(); body = EntityUtils.toString(entity); } finally { httpclient.getConnectionManager().shutdown(); } return body; } public static String do_get(String url) throws ClientProtocolException, IOException { String body = "{}"; DefaultHttpClient httpclient = new DefaultHttpClient(); try { HttpGet httpget = new HttpGet(url); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); body = EntityUtils.toString(entity); } finally { httpclient.getConnectionManager().shutdown(); } return body; }
JXmlSerializable 是一个利用java反射,通过调用对象中所有以get(不区分大小写)开头的方法除去getClass方法,生成xml格式,希望与大家分享一下下面是一个parent对象,包含两个child对象 生成的xml如下
Child类
1package xmlTest;
2
3import java.io.FileNotFoundException;
4import java.io.IOException;
5import java.io.PrintWriter;
6import java.lang.reflect.InvocationTargetException;
7public class Child extends JXmlSerializable {
8
9 private String _name;
10 private String _sex;
11 private int age;
12
13 public void setAge(int num) {
14 age = num;
15 }
16
17 public int getAge() {
18 return age;
19 }
20
21 public void setName(String name) {
22 _name = name;
23 }
24
25 public void setSex(String sex) {
26 _sex = sex;
27 }
28
29 public String getName() {
30 return _name;
31 }
32
33 public String getSex() {
34 return _sex;
35 }
36
37}
38
Parent类 1package xmlTest;
2
3import java.io.PrintWriter;
4import java.lang.reflect.Array;
5import java.util.*;
6
7public class Parent extends JXmlSerializable {
8
9 private String _name;
10 private String _sex;
11 private LinkedList list = new LinkedList();
12 private Vector vec = new Vector();
13 int age;
14
15 public void setAge(int num) {
16 age = num;
17 }
18
19 public int getAge() {
20 return age;
21 }
22
23 public void setName(String name) {
24 _name = name;
25 }
26
27 public void setSex(String sex) {
28 _sex = sex;
29 }
30
31 public String getName() {
32 return _name;
33 }
34
35 public String getSex() {
36 return _sex;
37 }
38
39 public void addChild(Child child) {
40 list.add(child);
41 vec.add(child);
42 }
43
44 public Child[] getChild() {
45
46 Child[] aa = new Child[vec.size()];
47 // list.toArray(aa);
48 vec.toArray(aa);
49 return aa;
50 }
51
52 public static void main(String[] args) {
53 // TODO Auto-generated method stub
54 try {
55 Parent pat = new Parent();
56 pat.setName("jack");
57 pat.setSex("male");
58 Child child1 = new Child();
59 child1.setName("tom");
60 child1.setSex("male");
61 pat.addChild(child1);
62 Child child2 = new Child();
63 child2.setName("Marie");
64 child2.setSex("female");
65 pat.addChild(child2);
66 pat.getChild();
67 PrintWriter out = new PrintWriter("abc.xml");
68 pat.toXmlSerial(out,0);
69 out.flush();
70
71 } catch (Exception e) {
72 e.printStackTrace();
73 }
74
75 }
76}
类 JXmlSerializable
1package xmlTest;
2
3import java.lang.reflect.Method;
4import java.lang.reflect.InvocationTargetException;
5import java.lang.reflect.Array;
6import java.io.PrintWriter;
7import java.io.IOException;
8public class JXmlSerializable {
9
10 public void toXmlSerial(PrintWriter out, int num)
11 throws InvocationTargetException, IllegalAccessException,
12 IOException {
13 out.write("<?xml version="1.0"?> ");
14 String head = "";
15 for (int i = 0; i < num; i++) {
16 head += " ";
17 }
18 out.write(head + "<" + this.getClass().getName() + "> ");
19 Method[] methods = this.getClass().getMethods();
20 for (int i = 0; i < methods.length; i++) {
21 Class[] paras = methods[i].getParameterTypes();
22 String name = methods[i].getName();
23 if (paras == null || paras.length == 0) {
24 if ((name.substring(0, 3).toLowerCase().equals("get"))
25 && !name.equals("getClass")) {
26 Object obj = methods[i].invoke(this, null);
27 getMethodXmlSerial(out, obj, methods[i], num);
28 }
29 }
30 }
31
32 out.write(head + "</" + this.getClass().getName() + "> ");
33
34 }
35
36 private void getMethodXmlSerial(PrintWriter out, Object obj, Method method,
37 int num) throws InvocationTargetException, IllegalAccessException,
38 IOException {
39 if (obj == null)
40 return;
41 String head = "";
42 for (int i = 0; i <= num; i++) {
43 head += " ";
44 }
45 if (obj.getClass().isArray()) {
46 for (int i = 0; i < Array.getLength(obj); i++) {
47 Object childobj = Array.get(obj, i);
48 if (childobj instanceof JXmlSerializable) {
49 ((JXmlSerializable) childobj).toXmlSerial(out, num + 1);
50 } else {
51 getMethodXmlSerial(out, childobj, method, num);
52 }
53 }
54 } else {
55 out.write(head + " <" + method.getName().substring(3) + "> ");
56 out.write(obj.toString());
57 out.write(" </" + method.getName().substring(3) + "> ");
58 }
59
60 }
61}
编译出来还可以,能够达到我的理想。
编译结果是
1<?xml version="1.0"?>
2<xmlTest.Parent>
3 <Name> jack </Name>
4 <Age> 0 </Age>
5 <Sex> male </Sex>
6<?xml version="1.0"?>
7 <xmlTest.Child>
8 <Name> tom </Name>
9 <Age> 0 </Age>
10 <Sex> male </Sex>
11 </xmlTest.Child>
12<?xml version="1.0"?>
13 <xmlTest.Child>
14 <Name> Marie </Name>
15 <Age> 0 </Age>
16 <Sex> female </Sex>
17 </xmlTest.Child>
18</xmlTest.Parent>
今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。
1以下是引用片段:
2package com.imct.util;
3import java.beans.XMLDecoder;
4import java.beans.XMLEncoder;
5import java.io.File;
6import java.io.FileInputStream;
7import java.io.FileNotFoundException;
8import java.io.FileOutputStream;
9import java.io.IOException;
10import java.util.ArrayList;
11import java.util.List;
12/** *//**
13 * <title>使用XML文件存取可序列化的对象的类</title>
14 * <description>提供保存和读取的方法</description>
15 * @author 殷晋
16 * <copyright>清华大学汽车工程开发研究院@2005</copyright>
17 * @version 1.0
18 * 2005-8-5 16:44:49
19 */
20public class ObjectToXMLUtil
21{
22 /** *//**
23 * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装
24 * 保存时将会用现在的对象原来的XML文件内容
25 * @param obj 要序列化的可序列化的对象
26 * @param fileName 带完全的保存路径的文件名
27 * @throws FileNotFoundException 指定位置的文件不存在
28 * @throws IOException 输出时发生异常
29 * @throws Exception 其他运行时异常
30 */
31 public static void objectXmlEncoder(Object obj,String fileName)
32 throws FileNotFoundException,IOException,Exception
33 {
34 //创建输出文件
35 File fo = new File(fileName);
36 //文件不存在,就创建该文件
37 if(!fo.exists())
38 {
39 //先创建文件的目录
40 String path = fileName.substring(0,fileName.lastIndexOf('.'));
41 File pFile = new File(path);
42 pFile.mkdirs();
43 }
44 //创建文件输出流
45 FileOutputStream fos = new FileOutputStream(fo);
46 //创建XML文件对象输出类实例
47 XMLEncoder encoder = new XMLEncoder(fos);
48 //对象序列化输出到XML文件
49 encoder.writeObject(obj);
50 encoder.flush();
51 //关闭序列化工具
52 encoder.close();
53 //关闭输出流
54 fos.close();
55 }
56 /** *//**
57 * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装
58 * @param objSource 带全部文件路径的文件全名
59 * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)
60 * @throws FileNotFoundException 指定的对象读取资源不存在
61 * @throws IOException 读取发生错误
62 * @throws Exception 其他运行时异常发生
63 */
64 public static List objectXmlDecoder(String objSource)
65 throws FileNotFoundException,IOException,Exception
66 {
67 List objList = new ArrayList();
68 File fin = new File(objSource);
69 FileInputStream fis = new FileInputStream(fin);
70 XMLDecoder decoder = new XMLDecoder(fis);
71 Object obj = null;
72 try
73 {
74 while( (obj = decoder.readObject()) != null)
75 {
76 objList.add(obj);
77 }
78 }
79 catch (Exception e)
80 {
81 // TODO Auto-generated catch block
82 }
83 fis.close();
84 decoder.close();
85 return objList;
86 }
87}
88
89
90当然用Beans.instantiate也可以从文件中反序列化初对象
91
92
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.xml”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.xml”实例
pw.write("我是要写入到xml文件的内容");//将要写入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
哥们问的是不是如何解析xml文件么
如果是的话, 可以用SAX解析
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(new File("web.xml"), new DefaultHandler() {
......
})
建议用jquery
在java中写出以下常用字符串的方法名称: 1.关于字符串类中,获取字符串...
1、如果字符串相等返回值0 2、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串)3、如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比...
JAVA语言中输入一个语句从键盘输入字符或者字符串!!!
首先要有个输入流InputStreamReader ir;再有个缓存BufferedReader in;然后 ir = new InputStreamReader(System.in);in = new BufferedReader(ir);这是输入 之后in.ReaderLine();按行读取,例如:class IOTest1 { public static void main(String args[]){ String str;\/\/创建一个BufferedReader对象...
java在字符串中添加符号。(在线等)
{ StringBuffer sb=new StringBuffer();for(String str:strs){ sb.append(str);sb.append("".equals(str)?"":"@@");} return sb.toString();} } 这种字符串拼接的话要用到可变字符串StringBuffer(或者StringBuilder)sb.append("".equals(str)?"":"@@");这里是一个三目运算符 ...
java中的包有那些 ???
7、java.wat.peer包:很少在程序中直接用到,使得同一个java程序在不同的软硬件平台上运行 8、java.applet包 9、java.net包:实现网络功能的类库有Socket类、ServerSocket类 10、java.corba包和java.corba.orb包 11、java.awt.datatransfer包:处理数据传输的工具类,包括剪贴板,字符串发送器等 12...
从键盘输入一串字符串,编写一个java程序实现统计,输出有几个大写字母...
这个是处理文件的类FileUtil:=== package org.xhome.leon.test;import java.io.*;public class FileUtil { FileReader fr;BufferedReader br;FileWriter fw;BufferedWriter bw;String source = "";public int upCaseNum = 0;public int lowerCaseNum = 0;public int numerNum = 0;public int oth...
java中输入字符串数组
\/\/简单的写了一个类,看看对你有没有帮助 import java.util.Scanner;public class TransString { public static void main (String[] args){ String trans_set[]=new String[6];System.out.println("请输入六个字符串");Scanner sc=new Scanner(System.in);for(int i=0;i<6;i++){ trans...
java 如何定义字符串变量
一、定义字符串 直接定义字符串是指使用双引号表示字符串中的内容,例如"Hello Java"、"Java 编程"等。具体方 法是用字符串常量直接初始化一个 String 对象,示例如下:String str="Hello Java"; String str; str="Heilo Java";二、用 String 类定义 1. String() 初始化一个新创建的 ...
JAVA从命令行输入几个字符串,统计并打印出输入字符串的个数、以及各字 ...
public static void main(String[] args) { System.out.println("字符串个数:"+args.length);for(int i=0;i<args.length;i++) { System.out.println("第"+(i+1)+"字符串字符个数:"+ args[i].length());\/\/args[i].length()表示传入参数的个数 } ...
java如何通过TCP发送字符串和整型数据组成的报文?
在Java中,你可以使用Socket和ServerSocket类来通过TCP发送和接收数据。以下是一个简单的例子,它展示了如何发送字符串和整数数据。首先,这是一个服务器端的代码:java复制代码 import java.io.*;import java.net.*;public class TCPServer { public static void main(String args[]) { try { Serve...
java library的入口在哪里?
如果你想要了解Java Library的新入口,其实并不复杂。首先,打开你的项目编译器,然后在项目中新建一个Java类。在该类中,找到并声明一个主方法,这是程序的入口点。接下来,关键步骤是利用Java的系统属性获取库路径。在主方法中,调用System.getProperty()方法,传入字符串"java.home",这个路径会返回...
百童复方: 二种方式:1、直接拼接字符串,如下 StringBuffer xml = new StringBuffer(); xml.append("<xml>"); xml.append("\r\n"); Iterator<Map.Entry<String, String>> entries = jovalue.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<String, ...
潼关县13070651277: java中 字符串转数值要怎样做 - ?
百童复方: String str=""; 直接转换: int num=Integer.parseInt("str"); int num1=Integer.valueOf("str"); int num2=Integer.decode(str); int num3=Integer.getInteger("str"); 间接转换: double no=Double.valueOf("str"); int num4=(int)no; double no1=Double.parseDouble("str"); int num5=(int)no; 这里有6种由字符串转换成数值类型的方式,至于怎样把它们转换成方法,用if多加几个判断就可以了.
潼关县13070651277: 在JAVA里,怎样把字符串类型的数字转换为整型类型?? - ?
百童复方: java里面有Integer类,直接利用这个类的转换函数就可以.Integer.parseInt(String s); 例如:int a=Integer.parseInt("12345").
潼关县13070651277: java中怎么把一个字符串里的字母转换成 “*”?? - ?
百童复方: 替换字符串中的所有字母可以用replaceAll方法,replaceAll支持正则表达式.方法原型:replaceAll(regex, replacement),replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字...
潼关县13070651277: java怎么把字符串中的其中一些字符转换成转换成数字类型 - ?
百童复方: Integer.parseInt(str);这个方法可以把字符串中的数字转化成int类型,如果字符串不是数字会抛出异常.
潼关县13070651277: 提问:java中如何把字符串转换成字符数组 - ?
百童复方: string的split()方法可以把一个字符串转换成一个字符数组(注意对空格的处理),然后再创建两个数组,一个保存字符串中的字母,一个保存字母出现的次数.最后对保存字母出现次数的数组进行排序,与保存字符串字母的数组关联输出.大概思路是这个样子,发帖人可以尝试的编写一下代码
潼关县13070651277: JAVA中怎么把字符串转换成字符数组 - ?
百童复方: String str = "JAVA中怎么把字符串转换成字符数组"; char[] cs = str.toCharArray();
潼关县13070651277: java中如何进行字符串和数据类型的转换? - ?
百童复方: java总字符串转换成其他基本数据类型的方式,可以使用基本数据类型的toString()方法,还有String类型转换成其他的基本数据类型,示例如下:1 2 3 4 5 6 7 8 9 10 11 12 13Integer I1=newInteger(i1);//生成Integer类 Float F1=newFloat(f1)...
潼关县13070651277: 怎样在Java中实现基本数据类型与字符之间的转换 - ?
百童复方: 如:String s = "123"; int num = Integer.parseInt(s);注意:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,会抛出异常java.lang.NumberFormatException 2、String类型转换成double类型变量:使用double类的...
潼关县13070651277: java字符串怎么转换为代码 - ?
百童复方: 首先转换不了 其次这种需求是多余的,既然你能先将代码定义成字符串,然后调用,为什么不在调用的地方直接写代码呢?明显多余的操作:比较一下 for(int i=0;i<1;i++){System.out.println("成功执行"); } 是不是更简介呢,舍简而求繁,何为?