Dom4j解析XML字符串求助

J2EE 码拜 10年前 (2015-04-19) 1088次浏览 0个评论

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();
    }
//第一次用,不清楚具体要怎么处理
}

求指导求教育求涨姿势

Dom4j解析XML字符串求助
== 改成  equals
Dom4j解析XML字符串求助
获取属性值循环你的attributes
for(Attribute attr:attributes){
//attr.getName()获取属性名,attr.getValue()获取属性的值
    if(attr.getName().equals(“TTID”)){
       task_id=attr.getValue();
    }
}
Dom4j解析XML字符串求助
引用 2 楼 suciver 的回复:

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

不行,取不到,task_id仍为null

Dom4j解析XML字符串求助
5分
引用 3 楼 qq_17507289 的回复:
Quote: 引用 2 楼 suciver 的回复:

获取属性值循环你的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属性的值。别老是想着别人把你的业务代码解决。

Dom4j解析XML字符串求助
引用 4 楼 suciver 的回复:
Quote: 引用 3 楼 qq_17507289 的回复:
Quote: 引用 2 楼 suciver 的回复:

获取属性值循环你的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属性的值。别老是想着别人把你的业务代码解决。

不好意思,刚接触半个月java开发,在调试时看dom4j解析的数据实在是不知道该用什么方法去取

Dom4j解析XML字符串求助
35分
 

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));
}

Dom4j解析XML字符串求助
数据不多可以用正则,上面 。
Dom4j解析XML字符串求助
网上有不少的例子,楼主可以借鉴下,另外解析XMl的包jdom用着不错
Dom4j解析XML字符串求助
引用 6 楼 rui888 的回复:
 

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));
}

<param n=”TTID” v=”plT1JYaoj7wQmdZmLDCu” />这种格式的Xml用dom4j解析的时候没办法很方便的getName()+getValue()然后给变量赋值,没办法,还是用正则给力


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Dom4j解析XML字符串求助
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!