NutzCN Logo
问答 Xmls转map的时候,attribute怎么办?
发布于 2774天前 作者 qq_16dd5808 1398 次浏览 复制 上一个帖子 下一个帖子
标签:

<?xml version="1.0" encoding="utf-8" ?>

Success
ok
9864
16027013
2

这个xml转换后的值
{
"returnstatus" :"Success",
"message" :"ok",
"remainpoint" :"9864",
"taskID" :"16027013",
"successCounts" :"2"
}

returnstatus 有个attr这个属性,不知道怎么办了。

NutMap xmlMap = Xmls.xmlToMap(xml);
logger.debug(Json.toJson(xmlMap));

7 回复

哎呀,发现编辑不了了。
那个xml原文

<?xml version="1.0" encoding="utf-8" ?>
<returnsms>
 <returnstatus attr="abc">Success</returnstatus>
 <message>ok</message>
 <remainpoint>9864</remainpoint>
 <taskID>16027013</taskID>
 <successCounts>2</successCounts>
</returnsms>

就是这一句的attr不知道怎么转换了

<returnstatus attr="abc">Success</returnstatus>

大大的 插入代码 按钮都不按一下

tomap拿不到的. 要取的话,用xmls类的其他方法试试,或者用xpath取

来自炫酷的 NutzCN

@qq_16dd5808 走xpath吧

来自炫酷的 NutzCN

嗯,我已经自己用xpath写了。因为还发现了问题,转换map的时候,只能转最后一个。

<?xml version="1.0" encoding="utf-8"?>
<returnsms> 
  <statusbox> 
    <mobile>13701000041</mobile>  
    <taskid>16031026</taskid>  
    <status>20</status>  
    <receivetime>2016/8/24 16:10:12</receivetime>  
    <errorcode>S:6</errorcode>  
    <extno/> 
  </statusbox>  
  <statusbox> 
    <mobile>18600321144</mobile>  
    <taskid>16031026</taskid>  
    <status>20</status>  
    <receivetime>2016/8/24 16:10:12</receivetime>  
    <errorcode>S:6</errorcode>  
    <extno/> 
  </statusbox> 
</returnsms>

比如这个xml有两组statusbox,但是转换map只转换出来最后一组。
多谢@wendal

@qq_16dd5808 是的,只能应付一些简单的XML

嗯,是的,只能处理最简单的,给后人提示一下,我的用法

Element element = Xmls.xml(Lang.ins(xml)).getDocumentElement();
System.out.println(Xmls.getText(Xmls.getEle(element, "//returnstatus")));
System.out.println(Xmls.getAttr(Xmls.getEle(element, "//returnstatus"), "attr"));

xml文件内容:

<?xml version="1.0" encoding="utf-8" ?>
<returnsms>
 <returnstatus attr="abc">Success</returnstatus>
 <message>ok</message>
 <remainpoint>9864</remainpoint>
 <taskID>16027013</taskID>
 <successCounts>2</successCounts>
</returnsms>

后台就可以打印
Success
abc

添加回复
请先登陆
回到顶部