Foxtable(狐表)用户栏目专家坐堂 → xml解析和写入问题


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

主题:xml解析和写入问题

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
xml解析和写入问题  发帖心情 Post By:2017/9/9 17:45:00 [只看该作者]

感谢有点蓝老师之前的引导。
我做了一个解析的案例,但是文件里的product number还有一些字段为什么提取不过来,size和其他几个有子参数怎么再拆分出来?
FT里关于xml的介绍太少了,我这个业余的看了网上的xml介绍有点懵。
我的问题是 第一个就是解析xml的问题,现在能读出来。另外如果要回写相关字段回去要怎么操作?

谢谢老师。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:xml解析演示.rar


[此贴子已经被作者于2017/9/9 19:28:09编辑过]

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/9 20:22:00 [只看该作者]

我试着将xml转出jason来解析
Dim xml As String = FileSys.ReadAllText("c:\XML sample.xml")
Dim xo As XObject = XObject.Parse(xml)
Output.Show(xo.ToString())
output.show(xo("@number"))
output.show(xo("inks-number")) ‘’这里无法取数
Dim bms As JArray = xo("inks")
For i As Integer = 0 To bms.Count - 1
   Output.show(bms(i)("name"))    
Next


---------------------------
版本:2017.8.19.1
---------------------------
代码执行出错,错误信息:



System.InvalidCastException: 无法将类型为“Newtonsoft.Json.Linq.JObject”的对象强制转换为类型“Newtonsoft.Json.Linq.JArray”。

   在 UserCode.Test()
---------------------------
确定   
---------------------------


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/10 12:12:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/10 13:05:00 [只看该作者]

参考代码

 

Dim xmlDoc As New System.Xml.XmlDocument
xmlDoc.Load(ProjectPath &   "xml\XML sample.xml")
Dim ndList  = xmlDoc.GetElementsByTagName("production-order")

For i As Integer = 0 To ndList.count - 1
    Dim n = ndlist(i)
    Dim number =  ndlist(i).Attributes("number")
    msgbox(number.value)
Next


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/10 14:06:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:xml sample.rar



Dim xml As String = FileSys.ReadAllText("c:\XML sample.xml")
Dim xo As XObject = XObject.Parse(xml)
Output.Show(xo.ToString())
output.show(xo("@number"))



Dim jo As JObject = Jobject.Parse(xo.ToString())
If jo("inks")("ink") IsNot Nothing Then
    For Each jt As JToken In jo("inks")("ink")
        Output.Show("油墨名称:" & jt("name").ToString )
        output.show("类型:" & jt("type").ToString)
        output.show("类别:" & jt("book").ToString)
        output.show("角度:" & jt("angle").ToString)
        output.show("lpi::" & jt("lpi").ToString)
        output.show("dot:" & jt("dot").ToString)
        output.show("printingmethod:" & jt("printingmethod").ToString)
    Next
End If
output.show(xo("quantity"))
output.show(xo("substrate"))

For Each jt As JToken In jo("size")
'output.show("length:" & jt("length").ToString)
output.show(jt.ToString)
Next

请问老师 像size这个嵌套属于什么对象,怎么才能将它分解出来。像inks那个节点我参考帮助解析出来了。但是size不知道用什么方法来解析。还有如process。
我发现json比xml好理解一点。帮助里的例子启发很大但是知识点太少了。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/10 14:11:00 [只看该作者]

直接写

 

output.show(jo("size")("length").tostring)


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/10 21:09:00 [只看该作者]

谢谢

 回到顶部