自己备份代码
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class ReadFromXMLAndJSON {
/**
* 获得xml字符串中指定节点的内容
* @param element 输入:Element对象
* @param eleName 输入:节点名称
* @param list 输出:所有满足条件的节点内容
*/
@SuppressWarnings("unchecked")
public void getURLFromXml(Element element, String eleName, List<String> list) {
for (Iterator its = element.elementIterator(); its.hasNext();) {
Element ele = (Element) its.next();
if (ele.getName().equals(eleName)) {
list.add(ele.getTextTrim());
}
if (ele.elements().size() > 0) {
getURLFromXml(ele, eleName, list);
}
}
}
/**
* 获得json字符串中指定name对应的value值
* @param jb 输入:JSONObject对象
* @param name 输入:指定name值
* @param list 输出:存放指定name对应的所有value
*/
@SuppressWarnings("unchecked")
public void getURLFromJson(JSONObject jb, String name, List<String> list) {
Iterator iter = jb.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next().toString();
System.out.println("key=" + key + ", val=" + jb.get(key));
if (key.trim().equals(name)) {
list.add(jb.get(key).toString());
}
if (jb.get(key).toString().indexOf("{") >= 0) { // 递归调用判断条件
JSONObject jbInner;
if (jb.get(key).getClass().equals(JSONArray.class)) {
for (int i = 0; i < jb.getJSONArray(key).size(); i++) {
jbInner = JSONObject.fromObject(jb.getJSONArray(key).get(i));
getURLFromJson(jbInner, name, list);
}
} else {
jbInner = JSONObject.fromObject(jb.get(key));
getURLFromJson(jbInner, name, list);
}
}
}
}
@SuppressWarnings("unchecked")
public void test(String formatStr) {
String messageXMLStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><request_message><message>"
+ " <title>面 包</title><title>2.20</title>"
+ "<valid_datetime>2012-05-20 20:30:00</valid_datetime"
+ "</message></request_message>";
String messageJSONStr = "{ 'programmers': [{ 'firstName': 'Elliotte', 'lastName':'Harold','email': 'elharo@macfaq.com' },{ 'firstName3333': 'Isaac3333'}], "
+ "'authors': [{ 'firstName': 'Isaac', 'lastName': 'Asimov', 'genre': 'science fiction' }]}";
// 解析XML文件
List<String> list = new ArrayList<String>();
if (formatStr.equals("xml")) {
try {
Document document = DocumentHelper.parseText(messageXMLStr);
Element root = document.getRootElement();
getURLFromXml(root, "title", list);
} catch (DocumentException e) {
e.printStackTrace();
}
} else if (formatStr.equals("json")) {
JSONObject jb = JSONObject.fromObject(messageJSONStr);
getURLFromJson(jb, "firstName", list);
}
for (Iterator ite = list.iterator(); ite.hasNext();) {
System.out.println(ite.next());
}
}
public static void main(String[] args) {
CallBackServlet cbs = new CallBackServlet();
cbs.test("xml");
cbs.test("json");
}
}
分享到:
相关推荐
在Java编程环境中,XML(可...总的来说,Java解析XML生成JSON对象的能力使得数据在不同平台和应用间无缝交换成为可能。通过学习和使用这样的工具类,开发者可以更高效地处理XML数据,并将其集成到基于JSON的系统中。
1. Xml与json的定义与区别:Xml是一种标记语言,用来描述和存储数据,具有自我描述性,而json是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成,因此在Web开发中得到广泛的应用。...
在Java开发中,XML(可扩展标记语言)和JSON...在`XmlToJson.java`这个工具类中,我们展示了如何利用Jackson库进行XML与JSON之间的转换。这只是一个基础示例,实际项目中可能需要进行更复杂的错误处理和数据验证。
本篇文章将详细介绍Java解析XML的四种方法以及JSON格式的相关知识。 一、DOM解析 DOM(Document Object Model)是W3C推荐的一种解析XML的标准方法,它将整个XML文档加载到内存中,形成一个树形结构,便于遍历和操作...
实现的一个简单的基于java 的,可以在xml和json之间相互转换的工具类,因为实在没有积分了,所以要点积分,希望理解~
这个方法中,`XmlMapper`用于解析XML,`ObjectNode`是Jackson中的一个抽象节点,用于表示JSON对象。然后,我们使用`jsonMapper.writeValueAsString()`将`ObjectNode`转换为JSON字符串。 3. **使用示例**:你可以...
本篇将详细介绍如何使用Java解析XML,将数据存入MongoDB,并返回org.json JSON包。 首先,解析XML通常有两种主要方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存...
Jackson提供了`XmlMapper`类来进行XML与JSON之间的转换。以下是如何将XML字符串转换为JSON对象的示例代码: ```java import com.fasterxml.jackson.databind.ObjectMapper; import ...
java解析json,xml 思路基本上是一致的,细心点就行,一层一层的解,要有耐心。该段代码最初是在HBuild上写的看效果需要放在类似于Tomcat或者Resign的服务器上发布。WebStream,Eclipse,MyEclipse上应该也能用。...
Java解析JSON是一个常见的任务,特别是在开发Web服务或者与API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库...
5. **安全与最佳实践**:在处理XML到JSON的转换时,应注意防止XXE(XML External Entity)攻击,这是一种利用XML解析器漏洞获取服务器敏感信息的攻击方式。确保使用安全配置的XML解析器,并避免解析不受信任的XML...
一直苦恼xml转json,很多工具类支持,但是转换的效果都很差,一个偶然的时间,我找到这个资源,分享给大家,解析效果相当不错。 使用方法: //将xml转为json JSONObject xmlJSONObj = XML.toJSONObject(ret);
除了解析JSON字符串到Java对象,这两个库还支持将Java对象转换为JSON字符串,以及解析JSON到Map或List等数据结构。 3. **其他库** 除了Jackson和Gson,还有其他的JSON处理库,如org.json(提供简单的JSON工具类)...
此外,它还支持JSON Schema验证,以及直接映射Java反射机制,使得JSON与Java对象之间的转换变得极其便捷。 4. **JSON解析**: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON...
本篇将详细介绍如何使用Java工具类进行XML与JSON的转换,并介绍相关知识。 首先,`pom依赖.txt`文件中应包含的是Maven项目的依赖信息。在Java项目中,我们需要引入处理XML和JSON转换的库。通常,我们使用如Jackson...
- 解析XML文档,将其转换为DOM(Document Object Model)树。 - 使用如XStream这样的库,将DOM树转换为Java对象模型。 - 使用Json-lib,将Java对象转换为JSON字符串。 反之,JSON到XML的转换则反向进行: - JSON...
总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...
Java中解析JSON数据主要依赖于一些库,如org.json库(包含JSONObject和JSONArray类)。 在Java中,解析JSON数据的步骤通常分为以下几个部分: 1. **导入相关库**:首先,你需要在项目中引入JSON库。如果是使用...
在Java中,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等库来解析和生成XML文档。 1. **DOM解析器**:DOM解析器将整个XML文档加载到内存中的一个树形...
03-Java核心类库_XML与JSON(配套工具)。包含fastjson-1.2.70.jar、gson-2.8.6.jar、dom4j-1.6.1.jar、jaxen-1.1-beta-7.jar、xstream-1.3.1.jar。