以文本方式查看主题 - 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=183854) |
-- 作者:洮沙 -- 发布时间:2022/11/16 11:24:00 -- [求助]XML解析 老师,麻烦问一下如何解析以下格式xml数据(计划提取发票代码等信息): <?xml version="1.0" encoding="UTF-8"?> -<ofd:OFD Version="1.1" DocType="OFD" xmlns:ofd="http://www.ofdspec.org/2016"> -<ofd:DocBody> -<ofd:DocInfo> <ofd:DocID>b6ae35f487e448bba27cb391fc7b840d</ofd:DocID> <ofd:Author>China Tax</ofd:Author> <ofd:CreationDate>2022-11-07</ofd:CreationDate> -<ofd:CustomDatas> <ofd:CustomData Name="template-version">1.0.20.0422</ofd:CustomData> <ofd:CustomData Name="native-producer">SuwellFormSDK</ofd:CustomData> <ofd:CustomData Name="producer-version">1.0.20.0603</ofd:CustomData> <ofd:CustomData Name="发票代码">062001</ofd:CustomData> <ofd:CustomData Name="发票号码">77610</ofd:CustomData> <ofd:CustomData Name="合计税额">***</ofd:CustomData> <ofd:CustomData Name="合计金额">362</ofd:CustomData> <ofd:CustomData Name="开票日期">2022年11月07日</ofd:CustomData> <ofd:CustomData Name="校验码">17431 86442 88824 2</ofd:CustomData> <ofd:CustomData Name="购买方纳税人识别号">91622922MA73</ofd:CustomData> <ofd:CustomData Name="销售方纳税人识别号">93621202MA73</ofd:CustomData> </ofd:CustomDatas> </ofd:DocInfo> <ofd:DocRoot>Doc_0/Document.xml</ofd:DocRoot> <ofd:Signatures>Doc_0/Signs/Signatures.xml</ofd:Signatures> </ofd:DocBody> </ofd:OFD> 帮助文件:http://www.foxtable.com/mobilehelp/topics/0171.htm 看了半天没有看懂,麻烦老师指导一下,谢谢! [此贴子已经被作者于2022/11/16 11:25:07编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/11/16 11:30:00 -- 转换为json。然后按json的方式取值即可 Dim xml As String = "<xml><to>George</to><from>John</from><content>Don\'t forget the meeting!</content></xml>" Dim xo As Foxtable.XObject = Foxtable.XObject.Parse(xml) Output.Show(xo.ToString) |
-- 作者:洮沙 -- 发布时间:2022/11/16 12:47:00 -- ‘蓝老师,运行不起来,麻烦再给修改一下,谢谢! Dim fl As String = "E:\\开发的程序\\出纳日记账\\Reports\\2022111612372327553\\OFD.XML" Dim xml As String = FileSys.ReadAllText(FL) Dim xo As Foxtable.XObject = Foxtable.XObject.Parse(xml) Output.Show(xo.ToString) Dim json As String = xo.ToString Dim jo As JObject = JObject.Parse(json) For Each jt As JToken In jo("ofd:CustomData") Output.Show(jt("@Name").ToString & "|" & jt("#text").ToString) Next |
-- 作者:有点蓝 -- 发布时间:2022/11/16 13:30:00 -- Output.Show(xo.ToString)显示什么内容? |
-- 作者:洮沙 -- 发布时间:2022/11/16 13:35:00 -- { "@xmlns:ofd": "http://www.ofdspec.org/2016", "@DocType": "OFD", "@Version": "1.1", "ofd:DocBody": { "ofd:DocInfo": { "ofd:DocID": "b6ae35f487e448bba27cb391fc7b840d", "ofd:Author": "China Tax", "ofd:CreationDate": "2022-11-07", "ofd:CustomDatas": { "ofd:CustomData": [ { "@Name": "template-version", "#text": "1.0.20.0422" }, { "@Name": "native-producer", "#text": "SuwellFormSDK" }, { "@Name": "producer-version", "#text": "1.0.20.0603" }, { "@Name": "发票代码", "#text": "06200190" }, { "@Name": "发票号码", "#text": "77610" }, { "@Name": "合计税额", "#text": "***" }, { "@Name": "合计金额", "#text": "3625.00" }, { "@Name": "开票日期", "#text": "2022年11月07日" }, { "@Name": "校验码", "#text": "17431 86442 8882" }, { "@Name": "购买方纳税人识别号", "#text": "916922MA73J85" }, { "@Name": "销售方纳税人识别号", "#text": "9362134H0D7L" } ] } }, "ofd:DocRoot": "Doc_0/Document.xml", "ofd:Signatures": "Doc_0/Signs/Signatures.xml" } } |
-- 作者:有点蓝 -- 发布时间:2022/11/16 14:17:00 -- 和普通的json解析没有区别啊,一层一层的取值:http://www.foxtable.com/mobilehelp/topics/0252.htm Dim fl As String = "E:\\开发的程序\\出纳日记账\\Reports\\2022111612372327553\\OFD.XML" Dim xml As String = FileSys.ReadAllText(FL) Dim xo As Foxtable.XObject = Foxtable.XObject.Parse(xml) For Each jt As JToken In xo("ofd:DocBody")("ofd:DocInfo")("ofd:CustomDatas")("ofd:CustomData") Output.Show(jt("@Name").ToString & "|" & jt("#text").ToString) Next |
-- 作者:洮沙 -- 发布时间:2022/11/16 14:45:00 -- 感谢蓝版,明知道是嵌套格式,功力不够,看的眼花缭乱! |