action接收、解析与发出xml格式参数

sinat_31245087 2015-11-13 02:11:17
action该接收、解析与发出xml格式参数 比如这段代码
<?xml version="1.0" encoding="utf-8"?>
<data ver="1.0">
<els><eMail>626021323@qq.com</eMail><password>123456</password>
<registerFrom>4dbe0f3a-2b4e-4ac0-89e3-67dff75d1569</registerFrom></els>
</data>

里面的email、password等代码该如何提取呢 而且参数个数不定不能写死 请问该如何做
...全文
116 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
从小就很呆 2015-11-16
package com.jrj;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

public class DuXMLStr {

	public List xmlElements(String xmlDoc){
        List<Map> list = new ArrayList();
		 //创建一个新的字符串
		StringReader read = new StringReader(xmlDoc);
		//创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
        InputSource source = new InputSource(read);
        //创建一个新的SAXBuilder
        SAXBuilder sb = new SAXBuilder();       
        try {
        	//通过输入源构造一个Document
			Document doc = sb.build(source);
			//取的根元素
           Element root = doc.getRootElement();
           System.out.println(root.getName());//输出根元素的名称
           //得到根元素所有子元素的集合
           List jiedian = root.getChildren();
           //获得XML中的命名空空间(XML中未定义可不写)
           Namespace ns = root.getNamespace();  
           Element et = null;
           for(int i=0;i<jiedian.size();i++){
        	   et =(Element)jiedian.get(i); //循环依次得到子节点
               List zjiedian = et.getChildren();
               Map<String,String>  map = new HashMap();
               for(int j=0;j<zjiedian.size();j++){
            	   Element xet = (Element)zjiedian.get(j);
            	   map.put(xet.getName(), xet.getText());
               }
        	   list.add(map);
           }
           for(int c=0;c<list.size();c++){
        	   Map m = list.get(c);
        	   Iterator<Entry<String,String>> it = m.entrySet().iterator();
        	   while(it.hasNext()){
        		   Map.Entry<String, String> entry = it.next(); 
        		   String key = entry.getKey(); 
        		   String value = entry.getValue(); 
        		   System.out.println("key = " + key + "; value = " + value); 

        	   }
           }
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
		return list;
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		DuXMLStr doc = new DuXMLStr();
        String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
        "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+
           "<row resultcount=\"1\">"+
              "<users_id>1001     </users_id>"+
              "<users_name>wangwei   </users_name>"+
              "<users_group>80        </users_group>"+
              "<users_address>1001号   </users_address>"+
           "</row>"+
           "<row resultcount=\"1\">"+
              "<users_id>1002     </users_id>"+
              "<users_name>wangwei   </users_name>"+
              "<users_group>80        </users_group>"+
              "<users_address>1002号   </users_address>"+
           "</row>"+
        "</Result>";
        doc.xmlElements(xml);


	}

}
回复
兔子托尼啊 2015-11-13
名称什么都不知道也是可以。递归啊。
private void print(int i, List<Element> list) {
    i++;
    for (Element el : list) {
        List<Element> childs = el.getChildren();
        if (childs.size() > 0) {
            fail(format(i) + el.getName() + "  " + getAttrInfo(el));
            print(i, childs);
        } else {
            fail(format(i) + el.getName() + ":" + el.getText() + "  " + getAttrInfo(el));
        }
    }
}
他那个代码里面有的。
回复
sinat_31245087 2015-11-13
引用 1 楼 u012171905 的回复:
可以试试使用Digester工具,struts2用的就是这个。 封装了DOM4J,充分体现面向对象。
能具体写一下代码吗 因为我这个参数类型并不固定 网上看了好多都是固定的类然后写死的
回复
sinat_31245087 2015-11-13
引用 2 楼 rui888 的回复:
jdom
试了下 感觉dom4j超难用啊 而且好像都是写死的 参数如果有变化就不行了
回复
兔子托尼啊 2015-11-13
回复
Coder_D 2015-11-13
可以试试使用Digester工具,struts2用的就是这个。 封装了DOM4J,充分体现面向对象。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-11-13 02:11
社区公告
暂无公告