字符串xml格式转List集合的那些坑

本文介绍了一种将XML字符串转换为Java List集合的方法,通过解析XML文档并将其转化为List<Map<String, Object>>类型,便于进一步的数据处理。文章详细展示了代码实现过程,包括处理XML字符串中的特殊字符和转换字节码。
/**
	 * xml字符串转list集合
	 * @param xml
	 * @return
	 */
	public static List<Map<String,Object>> xmlToList(String xml){
		if(null == xml || "".equals(xml)){
			Logger.getLogger(XmlUtil.class).info("xml为空");
			return null;
		}
		List<Map<String, Object>> list = new ArrayList();
		xml =xml.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "").replace("\n","").replace(" ","");;
		SAXReader reader = new SAXReader();
		Document document = null;
		try {
			Logger.getLogger(XmlUtil.class).info(xml);
			document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));
			Element root = document.getRootElement();//获取根元素
	        List<Element> childElements = root.elements();//获取当前元素下的全部子元素
	        
	        
	        for (Element child : childElements) {//循环输出全部信息
	        	Map<String, Object> map = new HashMap();//每个实体
	        	List<Element> infos = child.elements();//每个对象信息
	            for (Element info : infos) {
	                String name = info.getName();//获取当前元素名
	                String text = info.getText();//获取当前元素值
	                map.put(name,text);
	            }
	            list.add(map);
	            map=null;//回收map
	        }
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

这里面有两个关键点:

  1. 字符串空格和行,必须用空字符串替换她们,如下:
xml =xml.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "").replace("\n","").replace(" ","");

 

  1. 字符串字节码,必须转为utf-8,如下:
document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));

 

### 如何在编程中将字符串换为 `List` 集合 当处理字符串并希望将其拆分为多个部分存储到列表中时,在 C# 中可以使用多种方法来实现这一目标。下面展示一种常见的方式,即通过指定分隔符分割字符串,并将结果存入 `List<string>`。 #### 使用 Split 方法和 List 构造函数 可以通过调用字符串对象上的 `Split()` 函数定义分隔字符数组作为参数传递给它来进行字符串切割操作[^1]。之后利用得到的结果初始化一个新的 `List<T>` 实例: ```csharp using System; using System.Collections.Generic; class Program { static void Main() { string input = "apple,banana,cherry"; // 将逗号作为分隔符来分离输入字符串中的项 char[] delimiters = new char[] { ',' }; var items = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); // 创建一个基于上述数组的新列表实例 List<string> itemList = new List<string>(items); foreach (var item in itemList) { Console.WriteLine(item); } } } ``` 此代码片段展示了如何把由逗号连接而成的一串水果名称化为包含各个独立元素的列表。注意这里还应用了 `StringSplitOptions.RemoveEmptyEntries` 参数以忽略任何可能存在的空白条目。 对于更复杂的数据类型比如自定义类的对象组成的列表,则可以根据具体需求先解析出相应字段再映射至实体类创建新的列表成员;而对于 XML 文档等内容则可借助像 dom4j 这样的库完成从文档节点向 Java Bean 或 Map 的变过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值