JDOM相关知识

来源:互联网 发布:php在线讲解 编辑:程序博客网 时间:2024/05/01 00:06
package com.huawei.common;


import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
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.xml.sax.InputSource;




public class Test {

public static void main(String[] args) throws JDOMException, IOException {
String xml = "<xml><code><![CDATA[code]]></code><msg><![CDATA[msg]]></msg><responseId>12345678</responseId></xml>";
String m ="<Res><nimabi><![CDATA[<?xml version='1.0' encoding='UTF-8'?><msg><File name='12'/><File name='12'/><File name='12'/></msg>  ]]></nimabi></Res>";
System.out.println(parseXmlToList2(xml)[0]);
System.out.println(parseXmlToList2(m)[0]);
String mm = "<?xml version='1.0' encoding='UTF-8'?><msg><File name='12'/><File name='12'/><File name='12'/></msg>";
StringReader read = new StringReader(mm);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
// 通过输入源构造一个Document
Document doc = (Document) sb.build(source);
Element root = doc.getRootElement();// 指向根节点
List<Element> es = root.getChildren();
for(Element e: es){
System.out.println(e.getAttributeValue("name"));
}

}

@SuppressWarnings("unchecked")
private static Object[] parseXmlToList2(String xml){
List<Map> argMapList = new ArrayList<Map>();
Map retMap = new HashMap();
try {
StringReader read = new StringReader(xml);
// 创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
// 通过输入源构造一个Document
Document doc = (Document) sb.build(source);
Element root = doc.getRootElement();// 指向根节点
List<Element> es = root.getChildren();
if (es != null && es.size() != 0) {
for (Element element : es) {
retMap.put(element.getName(), element.getValue());
}
}
argMapList.add(retMap);
} catch (Exception e) {
e.printStackTrace();
}
return new Object[] {argMapList};
}

}



有的时候调用wsdl 接口会出现有

<Res>

<nimabi>

<![CDATA[

<?xml version='1.0' encoding='UTF-8'?>

<msg>

<File name='12'/>

<File name='12'/>

<File name='12'/>

</msg>  

]]>

</nimabi>

</Res>";这样的字符串返回,按照上面这种方法可取到

<?xml version='1.0' encoding='UTF-8'?>

<msg>

<File name='12'/>

<File name='12'/>

<File name='12'/>

</msg>  这样的字符串 

再用JDOM解析就OK了

0 0
原创粉丝点击