Foxtable(狐表)用户栏目专家坐堂 → 解析webservice返回的xml


  共有4131人关注过本帖树形打印复制链接

主题:解析webservice返回的xml

帅哥哟,离线,有人找我吗?
有点色
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/9 18:39:00 [显示全部帖子]


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/10 20:14:00 [显示全部帖子]

 把你获取到的字符保存在txt里面上传上来测试。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/10 20:16:00 [显示全部帖子]

 不是可以判断是否为数组?

 


If Typeof xo("NewDataSet")("ds")  Is Jarray Then '多行数据

Else    '一行数据

End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 10:21:00 [显示全部帖子]

Dim ret As String = FileSys.ReadAllText("g:\xml.txt", encoding.default)
Dim xo As XObject = XObject.Parse(HTMLDecode(ret))

For Each ds As JToken In  xo("NewDataSet")("ds")
    '  output.show( ds("LISITEMNAME"), ds("RESULT"),ds("RANGE"),CStr(ds("FLAG") )
   
    output.show( ds("RANGE"))
   
    output.show( ds("FLAG"))
   
    output.show( ds("LISITEMNAME"))
   
    output.show(ds("RESULT"))
    If Typeof ds("UNIT") Is jvalue Then
        output.show(ds("UNIT"))
    Else
        msgbox(ds("UNIT").Tostring)
    End If

   
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 10:58:00 [显示全部帖子]

你不是可以不显示?红色代码不写就好了啊

 

    If Typeof ds("UNIT") Is jvalue Then
        output.show(ds("UNIT"))
    Else
        msgbox(ds("UNIT").Tostring)
    End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 11:12:00 [显示全部帖子]

Dim ret As String = FileSys.ReadAllText("g:\xml.txt", encoding.default)
Dim xo As XObject = XObject.Parse(HTMLDecode(ret))

For Each ds As JToken In  xo("NewDataSet")("ds")
    '  output.show( ds("LISITEMNAME"), ds("RESULT"),ds("RANGE"),CStr(ds("FLAG") )
   
    output.show( ds("RANGE"))
   
    output.show( ds("FLAG"))
   
    output.show( ds("LISITEMNAME"))
   
    output.show(ds("RESULT"))
    If Typeof ds("UNIT") Is jvalue Then
        output.show(ds("UNIT"))
    Else
        msgbox(ds("UNIT")("@xml:space"))
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 12:12:00 [显示全部帖子]

 我这样测试没问题

 

        Dim wb As New weui
        Dim ret As String = FileSys.ReadAllText("g:\xml.txt", encoding.default)
        Dim xo As XObject = XObject.Parse(HTMLDecode(ret))
       
        If Typeof xo("NewDataSet")("ds")  Is jarray Then          '如果是数组    即 有多行结果用如下代码.
            With wb.AddTable("","Table1")
                .head.AddRow("项目名称","检查结果","范围","标志","单位") '主表的表头
                For Each ds As JToken In  xo("NewDataSet")("ds")
                    ' .body.AddRow( CStr(ds("LISITEMNAME")), CStr(ds("RESULT")),CStr(ds("RANGE")),CStr(ds("FLAG")),CStr(ds("UNIT")) )
                    If Typeof ds("UNIT") Is jvalue Then
                        'msgbox(cstr(ds("LISITEMNAME")) & cstr(ds("RESULT")) & cstr(ds("RANGE")) & cstr(ds("FLAG")) & cstr(ds("UNIT")) )
                        .body.AddRow(ds("LISITEMNAME").tostring,ds("RESULT").tostring,ds("RANGE").tostring, ds("FLAG").tostring ,ds("UNIT").tostring)
                    Else
                        'msgbox( cstr(ds("LISITEMNAME")) & cstr(ds("RESULT")) & cstr(ds("RANGE")) & cstr(ds("FLAG")) & cstr(ds("UNIT")("@xml:space='preserve'")) )
                        .body.AddRow(ds("LISITEMNAME").tostring,ds("RESULT").tostring,ds("RANGE").tostring,ds("FLAG").tostring,ds("UNIT")("@xml:space").tostring)         
                    End If
                Next
            End With
        Else           '如果不是数组,即呆有一行结果.
            With wb.AddTable("","Table1")
                .head.AddRow("项目名称","检查结果","范围","标志","单位") '主表的表头
                ' For Each ds As JToken In  xo("NewDataSet")("ds")
                ' .body.AddRow( CStr(ds("LISITEMNAME")), CStr(ds("RESULT")),CStr(ds("RANGE")),CStr(ds("FLAG")),CStr(ds("UNIT")) )
                .body.AddRow( xo("NewDataSet")("ds")("LISITEMNAME"), xo("NewDataSet")("ds")("RESULT"),xo("NewDataSet")("ds")("RANGE"),xo("NewDataSet")("ds")("FLAG"),xo("NewDataSet")("ds")("UNIT"))      ' '注意如果主表只有一项并没有明细,则这里会报错
                ' Next
            End With
        End If
       
        ' wb.AppendHTML("<script src='./lib/test.js'></script>") '引入脚本文件
        e.WriteString(wb.Build) '生成网页


 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/5/11 15:19:00 [显示全部帖子]

24楼,测试没问题。请自行认真测试。

 回到顶部