开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4372|回复: 6
收起左侧

[已回应] 精益模块_XML树类 无法取重复相同子节点名下面的多个值

[复制链接]
结帖率:95% (19/20)
发表于 2017-10-27 12:11:22 | 显示全部楼层 |阅读模式   四川省成都市
如果下面所说有误,还请各位大师批评指正。
假设有XML内容如下:
  1. <SoftList>
  2.         <Client_IO_SoftWareResult>
  3.                 <GJDownLoadCount>125804</GJDownLoadCount>
  4.                 <OrderID>0</OrderID>
  5.                 <CRC32 />
  6.                 <FileURL>http://abc.exe</FileURL>
  7.                 <SoftClassName>2015</SoftClassName>
  8.                 <SoftClassCode>xxx2015</SoftClassCode>
  9.                 <SoftClassID>1400024</SoftClassID>
  10.                 <ID>9729</ID>
  11.                 <GJSoftName>abc</GJSoftName>
  12.                 <AreaName>全国</AreaNam
  13.                 e>
  14.                 <AreaID>0</AreaID>
  15.                 <Version>6.4.1.2088.0</Version>
  16.                 <Description>新版本的优化功能有40余项<br /></D
  17.                         escription>
  18.                         <Summary />
  19.                         <UpLoadDate>2016-10-08</UpLoadDate>
  20.                         <LastModifyDate>2016-10-8 10:06:08</LastModifyDate>
  21.                         <FileLength>228908102</FileLength>
  22.                         <FileName />
  23.                         <ClassName />
  24.                         <SoftImg>5df4e699-34fb-4eb3-b7d6-f056db73d3b1.PNG</SoftImg>
  25.                         <LockVersion />
  26.                         <IsPatch>0</IsPatch>
  27.                         <ProductDesc>xx</ProductDesc>
  28.                         <IsNew>1</IsNew>
  29.                         <IsPublishWeb>1</IsPublishWeb>
  30.                         <IsHistoryVersion>0</IsHistoryVersion>
  31.                 </Client_IO_SoftWareResult>
  32.                 <Client_IO_SoftWareResult>
  33.                         <GJDownLoadCount>111</GJDownLoadCount>
  34.                         <OrderID>0</OrderID>
  35.                         <CRC32 />
  36.                         <FileURL>下载地址2</FileURL>
  37.                         <SoftClassName>bb</SoftClassName>
  38.                         <SoftClassCode>cc</SoftClassCode>
  39.                         <SoftClassID>1400050</SoftClassID>
  40.                         <ID>10988</ID>
  41.                         <GJSoftName>dd</GJSoftName>
  42.                         <AreaName>ee</AreaName>
  43.                         <AreaID>0</AreaID>
  44.                         <Version>7.0.0.2126.0</Version>
  45.                         <Description>ee</Description>
  46.                         <Summary />
  47.                         <UpLoadDate>2017-08-08</UpLoadDate>
  48.                         <LastModifyDate>2017-8-8 14:24:20</LastModifyDate>
  49.                         <FileLength>369489322</FileLength>
  50.                         <FileName />
  51.                         <ClassName />
  52.                         <SoftImg>df352ea4-ec7e-4848-be63-ec111d0edc45.PNG</SoftImg>
  53.                         <LockVersion />
  54.                         <IsPatch>0</IsPatch>
  55.                         <ProductDesc>产品描述2</ProductD
  56.                         esc>
  57.                         <IsNew>1</IsNew>
  58.                         <IsPublishWeb>1</IsPublishWeb>
  59.                         <IsHistoryVersion>0</IsHistoryVersion>
  60.                 </Client_IO_SoftWareResult>
  61.                 <Client_IO_SoftWareResult>
  62.                         <GJDownLoadCount>5524</GJDownLoadCount>
  63.                         <OrderID>0</OrderID>
  64.                         <CRC32 />
  65.                         <FileURL>下载地址3</File
  66.                         URL>
  67.                         <SoftClassName>分类3</SoftClassNam
  68.                         e>
  69.                         <SoftClassCode>代码3</SoftClassCod
  70.                         e>
  71.                         <SoftClassID>ID3</SoftClassID>
  72.                         <ID>11189</ID>
  73.                         <GJSoftName>名字3</GJSoftNam
  74.                         e>
  75.                         <AreaName>全国</AreaNam
  76.                         e>
  77.                         <AreaID>0</AreaID>
  78.                         <Version>1.3.2.3021.0</Version>
  79.                         <Description>描述3</Descriptio
  80.                         n>
  81.                         <Summary />
  82.                         <UpLoadDate>2017-09-13</UpLoadDate>
  83.                         <LastModifyDate>2017-9-15 11:45:20</LastModifyDate>
  84.                         <FileLength>108439720</FileLength>
  85.                         <FileName />
  86.                         <ClassName />
  87.                         <SoftImg>40ba57b0-6af6-4e8f-a811-11131321b24d.ICO</SoftImg>
  88.                         <LockVersion>3.8.552.3424</LockVersion>
  89.                         <IsPatch>0</IsPatch>
  90.                         <ProductDesc>介绍3</ProductDes
  91.                         c>
  92.                         <IsNew>1</IsNew>
  93.                         <IsPublishWeb>1</IsPublishWeb>
  94.                         <IsHistoryVersion>0</IsHistoryVersion>
  95.                 </Client_IO_SoftWareResult>rsion>
  96.         </Client_IO_SoftWareResult>
  97. </SoftList>
复制代码
SoftList 根下,有三个相同的Client_IO_SoftWareResult子项,每个Client_IO_SoftWareResult下有26个相同子项。


这种模式下,如何取每个Client_IO_SoftWareResult下的各自子项。


由于精益模块中,取子节点值只能:
  
XML树类.取节点值 ("节点全路径[文本型]")
  
子程序名返回值类型公开备 注
(未填写子程序名)   
参数名类 型参考可空数组备 注
参数名类 型参考可空数组备 注
节点全路径文本型本参数为节点在解析树中的全路径,通过“/”字符把节点名称串联起来,例如“根节点/子节点/叶子节点”。


相比易语言本身支持库:
  
调用格式: 〈逻辑型〉 对象.取节点值 (文本型 节点全路径,文本型变量 节点值) - XML解析支持库->XML树
英文名称:GetChildNodeValue
取得参数节点的值。该方法执行成功返回真,执行失败返回假。本命令为初级对象成员命令。
参数<1>的名称为“节点全路径”,类型为“文本型(text)”。本参数为节点在解析树中的全路径,格式有两种形式:一种为通过“/”字符把节点名称串联起来,例如“根节点/子节点/叶子节点”;另一种是采用索引的形式,索引的最小值为1,表示它是它父节点的第几个子节点,然后在索引前面加上@符号,例如“@1/@2/@1”。这两种形式可以混合使用,例如“根节点/@1/@2”
参数<2>的名称为“节点值”,类型为“文本型(text)”,提供参数数据时只能提供变量。本参数作为“取节点值”命令的填充参数。“取节点值”命令执行完毕后,该参数的内容为节点的值。如果命令执行失败,该参数的值无意义。

由于精益的xml树类无法采用索引形式,无法表示出它是它父节点的第几个子节点,故似乎无法取出上面例子中“下载地址2”和“下载地址3”。
故建议精益添加此功能。

上述建议,不知道是否正确,由于我本身是个菜鸡,也许是因为我使用不精而无法实现,还请大家指正。
发表于 2017-11-25 15:10:57 | 显示全部楼层   浙江省温州市
zm3ekp 发表于 2017-11-5 20:44
80
        20
        90

  StringReader read = new StringReader(res);   
        InputSource source = new InputSource(read);      
        SAXBuilder sb = new SAXBuilder();       
        try {
                        Document  doc = sb.build(source);                                       
                        Element  root = doc.getRootElement();                                   
                        List  jiedian = root.getChildren();                       
                        Element xet = (Element) jiedian.get(0);               
                        List<Element>  s   = (List<Element>) xet.getChildren("float");               
                        System.out.println(s.size());
                        List<String>  lis  = new ArrayList<String>();
                        for(int i = 0;i < s.size();i++){
                                String  a = s.get(i).getText();
                                System.out.println(s.get(i).getText());
                                lis.add(a);
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)
发表于 2017-11-16 10:55:07 | 显示全部楼层   广东省揭阳市
.................
回复 支持 反对

使用道具 举报

结帖率:95% (19/20)

签到天数: 2 天

 楼主| 发表于 2017-11-8 09:40:48 | 显示全部楼层   四川省成都市
zm3ekp 发表于 2017-11-5 20:42
请问你解决了吗

解决了。

用自带的XML类就可以了。
回复 支持 反对

使用道具 举报

发表于 2017-11-7 13:15:52 | 显示全部楼层   河南省信阳市
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2017-11-5 20:44:30 | 显示全部楼层   河南省济源市
<Info>
        <float>80</float>
        <float>20</float>
        <float>90</float>
        <float>2</float>
        <float>0.05</float>
        <float>1.5</float>
        <float>400</float>
        <float>180</float>
        <float>0</float>
        <float>20</float>
        <float>1</float>
        <float>0</float>
        <float>0</float>
</Info>

要是你,你将如何读取相同float字节下的值
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2017-11-5 20:42:20 | 显示全部楼层   河南省济源市
请问你解决了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表