当前位置: 代码迷 >> J2EE >> Dom4j解析XML字符串
  详细解决方案

Dom4j解析XML字符串

热度:341   发布时间:2016-04-17 23:49:27.0
Dom4j解析XML字符串求助
本帖最后由 qq_17507289 于 2014-07-29 14:00:21 编辑
XML字符串如下
<?xml version="1.0" encoding="UTF-8" ?>
<req version="1.0">
<task type="transc" target="report">
<param n="TTID" v="plT1JYaoj7wQmdZmLDCu" />
<param n="status" v="recording" />
<param n="ratio" v="95" />
<param n="payload" v="28404544" />
</task>

JAVA代码自己写了一部分
Document document = DocumentHelper.parseText(sb.toString());//sb.toString是xml字符串
Element root = document.getRootElement();
List<Element> elements = root.elements();
for (Iterator<Element> it = elements.iterator(); it.hasNext();) {
    Element element = it.next();
    List<Attribute> attributes = element.attributes();
//下面不知道该怎么写才能正确取到对应的值

    if(element.getName()=="TTID"){
task_id = element.getText();
    }else if(element.getName()=="ratio"){
rate = element.getText();
    }else if(element.getName()=="payload"){
file_size = element.getText();
    }else if(element.getName()=="status"){
status = element.getText();
    }
//第一次用,不清楚具体要怎么处理
}

求指导求教育求涨姿势
------解决方案--------------------
引用:
Quote: 引用:

获取属性值循环你的attributes
for(Attribute attr:attributes){
//attr.getName()获取属性名,attr.getValue()获取属性的值
    if(attr.getName().equals("TTID")){
       task_id=attr.getValue();
    }
}

不行,取不到,task_id仍为null

楼主我已经把思路告诉你了,取属性值和属性名的方法都告诉你了,自己动手改改就可以了,
你这个TTID是n属性的值而你要的task_id应该是v属性的值。别老是想着别人把你的业务代码解决。
------解决方案--------------------
String s="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
s+="<req version=\"1.0\">";
s+="<task type=\"transc\" target=\"report\">";
s+="<param n=\"TTID\" v=\"plT1JYaoj7wQmdZmLDCu\" />";
s+="<param n=\"status\" v=\"recording\" />";
s+="<param n=\"ratio\" v=\"95\" />";
s+="<param n=\"payload\" v=\"28404544\" />";
s+="</task>";

Matcher m = Pattern.compile("<param\\s?n=\"(.*?)\"\\s?v=\"(.*?)\"").matcher(s);
while(m.find()){
System.out.println(m.group(1)+"---->"+m.group(2));
}
  相关解决方案