import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class XMLUtil {
private static Logger log = LoggerFactory.getLogger(XMLUtil.class);
/**
* 解析xml,返回第一级元素键值对。如果第一级元素有子节点,则此节点的值是子节点的xml数据。
* @param strxml
* @return
* @throws JDOMException
* @throws IOException
*/
public static Map doXMLParse(String strxml) throws JDOMException, IOException {
strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");
if(null == strxml || "".equals(strxml)) {
return null;
}
Map m = new HashMap();
InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(in);
Element root = doc.getRootElement();
List list = root.getChildren();
Iterator it = list.iterator();
while(it.hasNext()) {
Element e = (Element) it.next();
String k = e.getName();
String v = "";
List children = e.getChildren();
if(children.isEmpty()) {
v = e.getTextNormalize();
} else {
v = XMLUtil.getChildrenText(children);
}
m.put(k, v);
}
//关闭流
in.close();
log.error("doXMLParse m==="+m.toString());
return m;
}
/**
* 获取子结点的xml
* @param children
* @return String
*/
public static String getChildrenText(List children) {
StringBuffer sb = new StringBuffer();
if(!children.isEmpty()) {
Iterator it = children.iterator();
while(it.hasNext()) {
Element e = (Element) it.next();
String name = e.getName();
String value = e.getTextNormalize();
List list = e.getChildren();
sb.append("<" + name + ">");
if(!list.isEmpty()) {
sb.append(XMLUtil.getChildrenText(list));
}
sb.append(value);
sb.append("</" + name + ">");
}
}
log.error("getChildrenText sb===="+sb.toString());
return sb.toString();
}
}
此处为抄录 出处不详
相关推荐
在实际应用中,XMLUtil可以广泛应用于配置文件管理、Web服务响应解析、数据交换、持久化存储等多个领域。例如,你可以用它来读取XML配置文件,然后将配置项映射到对应的Java对象,从而方便地管理和操作这些配置。...
它以易于人类阅读和机器解析的方式描述数据。 - XML的结构化特性使得它在Web服务、配置文件、数据交换等方面广泛应用。 - 解析XML主要有两种方式:DOM(Document Object Model)和SAX(Simple API for XML),前者...
5. **XMLUtil.java**: XML解析工具类,微信支付的接口通常返回XML格式的数据,这个类可能是用于解析这些数据,提取出退款状态、退款金额等关键信息的。 6. **RefundClassTest.java**: 这个文件可能是一个退款功能的...
Unity XML解析工具是一种在Unity引擎中处理XML数据的方法,它允许开发者从XML文件中提取信息并将其存储到合适的数据结构中,例如字典集合。XML(eXtensible Markup Language)是一种广泛使用的标记语言,用于存储和...
Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...
根据xmlPath路径,找到对应的xml文件,进行解析!之前找了好多感觉和自己的需求不太一样,这个可以根据Xpath解析出来xml里所有的信息,十分好用 举个例子 xmlPath = "E://upload/xml/1580242.163.xml"; XPathUtil util ...
Flex网上书店 运行时 的 XMLUtil.class
XMLUtil.java,,这就是一小串代码,是一个配置文件,放在Java程序里面。
该方法使用DocumentBuilderFactory来实例化DocumentBuilder对象,然后使用DocumentBuilder来解析已有的XML文件,然后将新的Xml节点添加到XML文件中。 public static void toWrite(String filename, String ip) ...
1. **双向证书验证**:微信支付接口要求使用SSL证书进行通信,确保数据传输的安全性。开发者需要获取并配置商户平台的API证书,包括私钥和公钥,用于请求的加密和解密。 2. **接口秘钥与签名**:在调用微信支付接口...
例如,你可以创建一个`XMLUtil`类,包含`parseDOM()`和`parseSAX()`方法,分别处理DOM和SAX解析。 `androidxmlparser3Gdemo`可能是示例项目的名称,它可能包含了一个或多个Android应用示例,演示了如何在实际项目中...
xml2bean
"XmlUtil.jar"可能是封装了XML解析和生成功能的Java库,可以直接在Java项目中引入使用。"README.txt"文件通常包含了关于如何使用该工具包的说明和示例,包括如何导入、调用相关方法以及注意事项等。"test.xml"文件...
本文实例讲述了Android开发中解析xml文件XmlUtils工具类与用法。分享给大家供大家参考,具体如下: 1. xmlUtil工具类 package com.example.xmlpaserutil.util; import java.io.InputStream; import java.lang....
8. **对比DOM解析**:与DOM解析相比,这个简易解析器可能更节省内存,因为DOM会加载整个XML文档到内存中形成一个树形结构,而这个解析器可能采用事件驱动的方式,按需读取XML数据,减少了内存占用。 9. **扩展性**...
xml文件数据解析
HttpRequest和HttpUtil处理网络通信,MD5保证数据安全,PayCommonUtil提供支付流程的通用功能,而XMLUtil则帮助解析和生成支付相关的XML数据。这样的设计使得代码结构清晰,易于维护和扩展。在实际应用中,还需要...
微信JSAPI工具包