Foxtable(狐表)用户栏目专家坐堂 → [求助]请教:怎样将xml用代码转换为狐表表格


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

主题:[求助]请教:怎样将xml用代码转换为狐表表格

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


加好友 发短信
等级:幼狐 帖子:168 积分:2609 威望:0 精华:0 注册:2012/10/16 22:38:00
[求助]请教:怎样将xml用代码转换为狐表表格  发帖心情 Post By:2016/9/20 17:44:00 [只看该作者]

求助大神:
xml内容是连接:http://api.douban.com/book/subject/isbn/9787505380173
现在需要在“表A”的“第一列”输入ISBN,譬如9787505380173,系统则自动连接上边的网点,并将获取的数据中的<db:attribute>部分自动填入第2列、第3列、第4列。


   如能做实例,不胜感激!

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


加好友 发短信
等级:超级版主 帖子:107846 积分:548581 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/20 17:58:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:168 积分:2609 威望:0 精华:0 注册:2012/10/16 22:38:00
  发帖心情 Post By:2016/9/22 1:53:00 [只看该作者]

已用其它方法解决。没用xml进行解析。
代码如下:
'---根据IBSB编号从豆瓣网图书api中自动查出图书信息
If e.DataCol.Name = "ISBN" Then '如果是已结帐列的内容变动
If e.DataRow("ISBN")<>"" Then
Dim obj_down As New System.Net.WebClient()   '定义一个下载类
obj_down.Encoding = System.Text.Encoding.UTF8   '进行编码成utf8,不然下载后的数据是乱码.
Dim data As String= obj_down.DownloadString("http://api.douban.com/book/subject/isbn/" & e.DataRow("ISBN"))   '豆瓣图书api接口,最后数字是ISBN,即扫描条码录入的信息.9787302308812 
Dim data1 As  String

data1= data.SubString(data.IndexOf("<db:attribute name="),data.LastIndexOf("</db:attribute>")-data.IndexOf("<db:attribute name="))
'MessageBox.Show(data1)
Dim nr As Row = Tables("图书信息").Current
Dim values() As String
values=data1.Split("</db:attribute>")
For Index As Integer = 0 To Values.Length - 1
If Values(Index).Contains("title") Then
         nr("书名") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("translator") Then
         nr("译者") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("author") And Values(Index).Contains("author-intro")=Nothing Then
         nr("作者") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If

If Values(Index).Contains("publisher") Then
         nr("出版社") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("pubdate") Then
         nr("出版日期") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("pages") Then
         nr("页数") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("price") Then
         nr("价格") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
If Values(Index).Contains("binding") Then
         nr("装订方式") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If

If Values(Index).Contains("author-intro") Then
         nr("作者简介") = Values(Index).SubString(Values(Index).IndexOf(">")+1)
End If
       '    Output.Show(Values(Index)) 
Next
'e.DataRow("序号") = e.DataTable.Compute("Max(序号)") + 1   '序号自增1
'Select e.DataCol.Name
 '   Case "ISBN"
        If e.DataRow.IsNull("类别") Then
            e.DataRow("序号") = Nothing
        Else
            Dim lb As String = e.DataRow("类别")
            Dim xh As String = e. DataRow("序号")
            If xh.StartsWith(lb) = False '如果单据序号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(序号)","类别 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大序号
                If max > "" Then '如果存在最大序号
                    idx = CInt(max.Substring(0,4)) + 1 '获得最大序号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("序号") = Format(idx,"0000")
            End If
        End If
'End Select



Tables("图书信息").Save()
Tables("图书信息").AddNew()
'Dim xmlDoc As New System.XML.XmlDocument
'xmlDoc.Loadxml(data)  'load方法是读取文件加载xml内容,loadxml方法是直接加载xml内容.如果用xmldoc.load(data)则要报路径非法的错误.
'Dim ndList As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("db:attribute")
'msgbox(ndList.count )
       ' Dim nr As Row = Tables("图书信息").AddNew
'        nr("书名") = r.GetAttribute("title")
                      
End If
End If


 回到顶部