以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  请问这种格式的xml文档用vb 6.0如何实现  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=69842)


--  作者:qqqme
--  发布时间:11/26/2008 10:41:00 AM

--  请问这种格式的xml文档用vb 6.0如何实现
<?xml version="1.0" encoding="GB2312"?>
<dskpmis version="1.0" slversion="1.0" jgbm="265402400000001" jgmc="fxqsadf"><table>
  <fptable fptable="T265018">税务机关代开统一发票</fptable></table>
 <data>
  <fpdata tablename="t265018" fpzlbm="265018" fpdm="265000801801" fphm="00000002" fplx="0" sfzf="0" czr="管理员" czrq="2008-11-25" fkfmc="234234234" sqbhm="234234" skfmc="2342342" skfsbh="234234" hjje="400" se="13.6" wszbh="00000002" kprq="2008-11-25" kpr="管理员" chfphm="0"><item tablename="tmx265018" xmid="1" pm="装卸搬运费" je="400"/>
  </fpdata><fpdata tablename="t265018" fpzlbm="265018" fpdm="265000801801" fphm="00000003" fplx="0" sfzf="0" czr="管理员" czrq="2008-11-25" fkfmc="sadfasdfasdf" skfmc="asdfasdf" skfsbh="sdfasdf" hjje="900" se="30.59" wszbh="00000003" kprq="2008-11-25" kpr="管理员" chfphm="0"><item tablename="tmx265018" xmid="1" pm="展览费" je="900"/>
  </fpdata>
 </data>
</dskpmis>


主要是中间fpdata部分,那是从一个表中取出的数据,=号前面是字段名,后面是数值,我生成的东西老是<fpdata>tablename=...... </fpdata>,与目标不一致,请大侠们相助

我的代码是这样的,还只是个初步的东西
    Dim file1 As Scripting.FileSystemObject
    Set file1 = New Scripting.FileSystemObject    '一个文件对象
    Dim Stream As TextStream                '一个文本流
    Dim xmlDoc As MSXML2.DOMDocument
    Dim rs1 As New adodb.Recordset          ''用来读取发票子表
    Dim StrforWrite As String
    Set xmlDoc = New MSXML2.DOMDocument
    
    xmlDoc.validateOnParse = False
    xmlDoc.async = False
    
    ''开始打开文件
    file1.CreateTextFile filename, True
    'Set filewsz = Nothing
    Set Stream = file1.OpenTextFile(filename, ForWriting)
    ''写入第一条
    ''写入xml头
    StrforWrite = "<?xml version=""1.0"" encoding=""GB2312""?>"
    Stream.WriteLine StrforWrite
    ''写入根结点信息
    StrforWrite = "<dskpmis version=""1.0"" slversion=""1.0""  jgbm=""" + glbswjgbm + "0001" + """ jgmc=""" + glbswjgmc + """><table><fptable fptable=""T265018"">税务机关代开统一发票</fptable></table>"
    Stream.WriteLine StrforWrite
    ''开始写记录了
    ''要分两步,一步是从一体票_导出为xml文件中取记录,一步是从税务机关_发票代开子表中取记录
    Dim Nodename(100) As String
    Dim Nodevalue(100) As String
    Dim datatext As String
    datatext = ""
    Dim onode As Object
    Set root = xmlDoc.createNode(1, "data", "")
    Set temp = xmlDoc.appendChild(root)
    Do While Not rs.EOF
            'Set root = xmlDoc.createNode(1, "data", "")
            'Set temp = xmlDoc.appendChild(root)
            
            Set onode = xmlDoc.createNode("element", "fpdata", "")
            
                datatext = "&It"
                For i = 0 To rs.Fields.Count - 1
                
                    'Set Child = xmlDoc.createNode("element", rs.Fields(i).name, "")
                    Nodename(i) = rs.Fields(i).name
                    If Not IsNull(rs.Fields(i)) Then
                        Nodevalue(i) = rs.Fields(i)
                    Else
                        Nodevalue(i) = ""
                    End If
                    datatext = datatext + Nodename(i) + "=" + """" + Nodevalue(i) + """" + " "
                    
                                     
   
                Next i
                onode.Text = datatext + "" + vbCrLf
                Set temp = root.appendChild(onode)
       
            rs.MoveNext
    Loop
                    rstoxml = root.xml

            Stream.WriteLine rstoxml
            xmlDoc.removeChild (root)

    rs.Close
    Set rs = Nothing


[此贴子已经被作者于2008-11-26 12:24:02编辑过]

--  作者:qqqme
--  发布时间:11/26/2008 10:42:00 AM

--  
主要是中间 fpdata那部分
--  作者:Qr
--  发布时间:11/26/2008 12:07:00 PM

--  
偶虽不懂VB,但从你的说明看,应该是代码的问题,如果你不把相关的代码发上来,光看XML文档是无法解决问题的。
--  作者:qqqme
--  发布时间:11/26/2008 1:48:00 PM

--  
也就是说让他生成
<fpdata tablename="t265018" fpzlbm="265018" fpdm="265000801801" fphm="00000002" fplx="0" sfzf="0" czr="管理员" czrq="2008-11-25" fkfmc="234234234" sqbhm="234234" skfmc="2342342" skfsbh="234234" hjje="400" se="13.6" wszbh="00000002" kprq="2008-11-25" kpr="管理员" chfphm="0"><item tablename="tmx265018" xmid="1" pm="装卸搬运费" je="400"/>
  </fpdata>  这样的格式
而不是我生成的
<fpdata>tablename="t265018" fpzldm="265018" fpdm="265000801801" fphm="00000001" fplx="0" sfzf="0" czr="root" czrq="2008-11-25" fkfmc="12312" sqbhm="" skfmc="临时代开" skfsbh="265402406149999" hjje="10000" se="2937.5" wszbh="00000001" kprq="2008-11-25" kpr="root" chfphm="0" <item>tablename="tmx265018" xmid="0" pm="代办费" je="10000"
</item></fpdata>
这种格式
初次接触xml, 还望相助
--  作者:Qr
--  发布时间:11/26/2008 7:02:00 PM

--  
Set onode = xmlDoc.createNode("element", "fpdata", "")
从上面这句来看,你是通过DOM方式来建立的fpdata节点,而tablename等是这个节点的属性。既然作为属性,就不能简单地把它们组合成一个datatext串来添加,必须当作属性来写入。节点属性可以通过 setAttribute()这个方法添加,自己查看一下相关帮助文档吧。
--  作者:hexun831012
--  发布时间:11/26/2008 8:02:00 PM

--  
我大概有6年不玩VB了
--  作者:qqqme
--  发布时间:12/3/2008 12:29:00 AM

--  
那天仔细看了下,是添加属性,可怜我居然折腾一天,搞定了,谢谢大家
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
80.078ms