以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]请教:怎样将xml用代码转换为狐表表格 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90727) |
-- 作者:lxy060669 -- 发布时间:2016/9/20 17:44:00 -- [求助]请教:怎样将xml用代码转换为狐表表格 求助大神: xml内容是连接:http://api.douban.com/book/subject/isbn/9787505380173现在需要在“表A”的“第一列”输入ISBN,譬如9787505380173,系统则自动连接上边的网点,并将获取的数据中的<db:attribute>部分自动填入第2列、第3列、第4列。 如能做实例,不胜感激!
|
-- 作者:有点蓝 -- 发布时间:2016/9/20 17:58:00 -- 自己学学https://www.baidu.com/baidu?word=vb.net+XML%E8%A7%A3%E6%9E%90&ie=utf-8&tn=myie2dg&ch=6 |
-- 作者:lxy060669 -- 发布时间: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 |