xml格式的字符串转换成List

[/code]package xml.string;

import java.util.Date;

@SuppressWarnings("serial")
public class ItemDom4j implements java.io.Serializable {

private String item02;
private String item03;
private String item04;
private String item05;
private String item06;
private String item07;
private String item08;
private String item09;
private String item10;

public ItemDom4j() {

}

//get和set方法省略
}

[code="java"]
package xml.string;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
* xml格式字符串转换成为特定的对象
* @author zhanght
*
*/
public class FromStringToObj {

@SuppressWarnings({ "unchecked", "rawtypes" })
private static List FromxmlStrToObj(String xmlString){
List itemObjs = new ArrayList();
Document doc = null;
try {
doc = DocumentHelper.parseText(xmlString); //将字符串转换成为dom对象
Element rootElement = doc.getRootElement();//获取根节点
Iterator iterator = rootElement.elementIterator("tbclbizinterfacestandard"); //获取根节点下面的子节点

Class itemdom4j = Class.forName("xml.string.ItemDom4j");//类名
Object obj = null;//对象
Method method = null;//方法
while(iterator.hasNext()){
Element elet = (Element) iterator.next(); //tbclbizinterfacestandard节点
List<Element> list = elet.elements(); //tbclbizinterfacestandard下的子节点

String fieldName = "";
obj = itemdom4j.newInstance();
for(int i=0;i<list.size();i++){
fieldName = list.get(i).getName();//节点名称
Field field = itemdom4j.getDeclaredField(fieldName); //属性名称
Object type = field.getGenericType();//属性类型
String filedValue = elet.element(fieldName).getTextTrim();//属性值

String methodName = "set"+fieldName.replace(fieldName.charAt(0)+"",(fieldName.charAt(0)+"").toUpperCase()); //方法名称
if("class java.lang.String".equals(type.toString())){
method = itemdom4j.getMethod(methodName,String.class);
method.invoke(obj, filedValue);
}else if("class java.lang.Double".equals(type.toString())){
method = itemdom4j.getMethod(methodName,Double.class);
method.invoke(obj, Double.valueOf(filedValue));
}else if("class java.lang.Integer".equals(type.toString())){
method = itemdom4j.getMethod(methodName,Integer.class);
method.invoke(obj, Integer.valueOf(filedValue));
}else if("class java.lang.Long".equals(type.toString())){
method = itemdom4j.getMethod(methodName,Long.class);
method.invoke(obj, Long.valueOf(filedValue));
}
}
itemObjs.add(obj);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return itemObjs;
}

public static void main(String[] args) {
String xmlStr= "<standardlist>"+ "<tbclbizinterfacestandard>"+ "<item02>it02</item02><item03>it03</item03><item04>it04</item04><item05></item05>"+ "</tbclbizinterfacestandard>"+
"<tbclbizinterfacestandard>"+ "<item02>it21</item02><item03>it23</item03><item04>it24</item04><item05></item05>"+ "</tbclbizinterfacestandard>"+ "<tbclbizinterfacestandard>"+ "<item02>it31</item02><item03>it32</item03><item04>it33</item04><item05></item05>"+ "</tbclbizinterfacestandard>"+ "<tbclbizinterfacestandard>"+ "<item02>it41</item02><item03>it43</item03><item04>it44</item04><item05></item05>"+
"</tbclbizinterfacestandard>"+
"</standardlist>";
FromxmlStrToObj(xmlStr);
}

}

最近的项目中需要把xml格式的字符串转换成对象保存到List中,查看网上资料根据dom4j和反射完成.代码在附件中可以直接运行
### 回答1: 可以使用解析库或者某些工具将XML字符串换为JSON格式。 例如,在Python中,可以使用第三方库xmltodict,使用方法如下: ``` import xmltodict xml_string = """ <root> <person> <name>John Doe</name> <age>23</age> </person> </root> """ json_data = xmltodict.parse(xml_string) print(json.dumps(json_data, indent=4)) ``` 输出: ``` { "root": { "person": { "name": "John Doe", "age": "23" } } } ``` 除了使用第三方库,也可以使用其他语言中内置的工具来完成换,例如Java中可以使用Jackson库等。 ### 回答2: 将XML字符串换为JSON可以通过以下几个步骤完成: 1. 解析XML字符串:使用XML解析器将XML字符串解析为XML文档对象。常用的解析器包括DOM解析器和SAX解析器。 2. 遍历XML文档对象:遍历XML文档对象,获取节点的名称、属性、子节点以及文本内容等信息。 3. 构建JSON对象:根据节点的信息,构建对应的JSON对象。节点名称作为JSON对象的键,节点的属性和文本内容作为对应键的值。如果节点有子节点,递归处理子节点。 4. 输出JSON字符串:将构建好的JSON对象换为JSON字符串。可以使用JSON库提供的方法将JSON对象序列化为字符串。 以下是一个示例代码,演示了如何将XML字符串换为JSON: ```python import json from xml.dom import minidom def xml_to_json(xml_str): # 解析XML字符串 xmldoc = minidom.parseString(xml_str) # 获取XML根节点 root_node = xmldoc.documentElement # 构建JSON对象 json_obj = {} if root_node.hasChildNodes(): for node in root_node.childNodes: # 忽略文本节点 if node.nodeType != node.TEXT_NODE: # 获取节点名称 node_name = node.nodeName # 初始化节点值 node_value = None # 如果节点有子节点,递归处理子节点 if node.hasChildNodes(): node_value = xml_to_json(node.toxml()) else: # 获取节点文本内容 node_value = node.firstChild.nodeValue # 构建JSON对象 if node_name not in json_obj.keys(): json_obj[node_name] = node_value else: # 如果节点名称已经存在,将其换为数组 if type(json_obj[node_name]) is list: json_obj[node_name].append(node_value) else: json_obj[node_name] = [json_obj[node_name], node_value] return json_obj # 示例XML字符串 xml_string = ''' <root> <name>张三</name> <age>25</age> <gender>男</gender> <address> <city>北京</city> <street>朝阳区</street> </address> <interests> <interest>篮球</interest> <interest>读书</interest> </interests> </root> ''' # 将XML换为JSON json_data = xml_to_json(xml_string) # 将JSON换为字符串 json_string = json.dumps(json_data) print(json_string) ``` 以上代码将输出如下JSON字符串: ```json {"root": {"name": "张三", "age": "25", "gender": "男", "address": {"city": "北京", "street": "朝阳区"}, "interests": {"interest": ["篮球", "读书"]}}} ``` 这样就完成了将XML字符串换为JSON的过程。 ### 回答3: 将XML字符串换为JSON有多种方法,以下是一种常用的方法: 首先,需要将XML字符串解析为XML文档对象。可以使用Python中的xml.etree.ElementTree库来完成解析操作。具体步骤如下: 1. 导入xml.etree.ElementTree模块和json模块。 ```python import xml.etree.ElementTree as ET import json ``` 2. 使用ElementTree的parse函数将XML字符串解析为XML文档对象。 ```python xml_str = "<root><name>John</name><age>25</age></root>" xml_doc = ET.fromstring(xml_str) ``` 3. 创建一个空的字典用于存储换后的JSON数据。 ```python json_data = {} ``` 4. 遍历XML文档对象的子元素,将其换为JSON键值对,并添加到字典中。 ```python for element in xml_doc: json_data[element.tag] = element.text ``` 5. 使用json模块的dumps函数将字典换为JSON字符串。 ```python json_str = json.dumps(json_data) ``` 最后,得到换后的JSON字符串,可以对其进行打印或其他操作。 ```python print(json_str) ``` 以上方法可以将简单的XML字符串换为JSON,如果XML结构更复杂则需要进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值