我现在有两个文件,其中一个是txt,一个 xml,在 txt中存放的是数据, xml中存放的是该数据的数据结构,我现在想把两个文本通过VB程序合成一个文件。

解决方案 »

  1.   

    把你的txt和xml的文件踢上来。
    把你的合成后的格式踢上来。
      

  2.   

    txt文件
    500000101000005#&客户名#&0101#&01#&2006-11-07 00:00:00.000#&01100533#&01#&000#&1#
    500000101000029#&客户名#&0101#&01#&2007-07-23 00:00:00.000#&01100962#&01#&203#&1#
    500000101000048#&客户名#&0101#&01#&2006-11-27 00:00:00.000#&01101687#&01#&000#&1#
    500000101000091#&客户名#&0101#&01#&2008-12-24 00:00:00.000#&01100660#&01#&000#&1#
    xml文件
    <?xml version="1.0" encoding="GBK"?>
    <Table name="kna_dpac" cnname="存款账户表" dbname=""><!--comment-->
    <!-- isNull 1为null,0为not null -->
    <!-- isPk 1为主键,0为不为主键 -->
    <!-- isUniqeIndex 1为唯一索引,0不为唯一索引 -->
    <Field enName="acctno" cnName="帐号              "  fieldType="varchar" fieldLen="40" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="1"></Field>
    <Field enName="acctna" cnName="账户名称          "  fieldType="varchar" fieldLen="80" fieldPrec="" fieldScale="" isNull="1" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="brchno" cnName="部门              "  fieldType="varchar" fieldLen="4" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="grupno" cnName="柜员组            "  fieldType="char" fieldLen="2" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="trandt" cnName="交易日期          "  fieldType="smalldatetime" fieldLen="4" fieldPrec="" fieldScale="" isNull="1" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="transq" cnName="交易流水          "  fieldType="varchar" fieldLen="12" fieldPrec="" fieldScale="" isNull="1" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="crcycd" cnName="币种              "  fieldType="char" fieldLen="2" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="termcd" cnName="存期              "  fieldType="char" fieldLen="3" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="0"></Field>
    <Field enName="daabtg" cnName="通兑标志          "  fieldType="char" fieldLen="1" fieldPrec="" fieldScale="" isNull="0" isPk="0" isUniqeIndex="0"></Field>
    </Table>   
    合成后的格式帐号#&账户名称#&部门#&柜员组#&交易日期#&交易流水#&币种#&存期#&通兑标志
    500000101000005#&客户名#&0101#&01#&2006-11-07 00:00:00.000#&01100533#&01#&000#&1#
    500000101000029#&客户名#&0101#&01#&2007-07-23 00:00:00.000#&01100962#&01#&203#&1#
    500000101000048#&客户名#&0101#&01#&2006-11-27 00:00:00.000#&01101687#&01#&000#&1#
    500000101000091#&客户名#&0101#&01#&2008-12-24 00:00:00.000#&01100660#&01#&000#&1#
      

  3.   

    对,就是把XML中数据的数据结构加到数据当中
      

  4.   

    我是想把合成的表导入到一个其他的数据库中,是因为以后如果有数据结构的变化我也可以通过变化后XML文件和TXT重新合成,就不用手工数据中表的数据结构了。
      

  5.   

    我对你这样的xml的格式不清楚,不过问题清楚了,有高手会的。
      

  6.   

    1.用DOMDocument或者XMLHTTP对象获取到xml数据文本,遍历各个节点,然后分析那些节点的信息.
    或者直接把得到的文本当做字符串来分析,找到cnName出现的位置,截取字符串,然后找下一个出现的位置;
    2.读取txt文件,重新写入.
      

  7.   

    Dim xHttp As New MSXML2.XMLHTTP '工程-->引用 microsoft xml ...strPara="xml地址"
    xHttp.open "get", strPara, False
    xHttp.sendIf xHttp.Status = 200 Then
        strRespones = xHttp.responseText'得到的xml内容字符串
         '…… 分析
    end if读写文本文件的方法随便在网上找有很多.  
      

  8.   

    不知道你会到什么程度,你的xml文件,给你示例一个读xml文件属性,得到字段名称的函数:Function GetFields(xmlFile As String) As String
        Dim oXmlDoc As DOMDocument
        Dim oXmlNodes As IXMLDOMNodeList
        Dim FileName As String
        Dim FieldName() As String
        Dim i As Long
        Dim NodeLength As Long
        
        Set oXmlDoc = New DOMDocument
        oXmlDoc.Load xmlFile
        Set oXmlNodes = oXmlDoc.documentElement.selectNodes(".//Field") 'Field集合
        
        NodeLength = oXmlNodes.length - 1
        ReDim FieldName(NodeLength)
        For i = 0 To NodeLength
            FieldName(i) = oXmlNodes.Item(i).Attributes(1).Text
            '循环Field集合,Attributes(1).text是一个Field中第二个属性的值
        Next
        GetFields = Join(FieldName, "#&")    Set oXmlNodes = Nothing
        Set oXmlDoc = Nothing
    End Function读写文本的示例就更多了吧,提示你可以用binary方式get和put方法分别读写文本,代码就不写了,忙...
      

  9.   

    直接读取,字符处理。(Document获取分析html元素更加灵活,不过给出的xml文件代码比较有规律,故用字符判断处理)Private Sub Command1_Click()
    Dim s1$, s2$(), s$(), ss$
    Open "d:\test.txt" For Binary As #1 '路径自己修改
    s1 = Trim(Input(LOF(1), #1))
    Close #1
    Open "d:\test.xml" For Binary As #1 '路径自己修改
    s2 = Split(Trim(Input(LOF(1), #1)), vbCrLf)
    Close #1
    For i = 0 To UBound(s2)
        If 0 < InStr(s2(i), "<Field") Then '照你给出原文格式判断,如果有变动自己调整
            s = Split(s2(i), "cnName=""")
            ss = ss & Trim(Left(s(1), InStr(s(1), """") - 1)) & "#&"
        End If
    Next i
    If InStrRev(ss, "#&") = Len(ss) - 1 Then ss = Left(ss, Len(ss) - 2)
    MsgBox ss & vbCrLf & s1
    End Sub
      

  10.   

    s1 = Trim(Input(LOF(1), #1)) 是读出文本中所有的字符吗?
      

  11.   

    参考你2楼的数据,相对完整的示例:
    Option Explicit'选择"工程->引用"菜单,钩选: Microsoft xml,6.0'这个函数用来读取xml文件中的字段属性
    Private Function GetFields(xmlFile As String) As String
        Dim oXmlDoc As DOMDocument
        Dim oXmlNodes As IXMLDOMNodeList
        Dim FieldName() As String
        Dim i As Long
        Dim NodeLength As Long
        
        Set oXmlDoc = New DOMDocument
        oXmlDoc.Load xmlFile
        Set oXmlNodes = oXmlDoc.documentElement.selectNodes(".//Field") 'Field集合
        
        NodeLength = oXmlNodes.length - 1
        ReDim FieldName(NodeLength)
        For i = 0 To NodeLength
            FieldName(i) = oXmlNodes.Item(i).Attributes(1).Text
            '循环Field集合,Attributes(1).text是一个Field中第二个属性的值
        Next
        GetFields = Join(FieldName, "#&")    Set oXmlNodes = Nothing
        Set oXmlDoc = Nothing
    End FunctionPrivate Sub Command1_Click()
        
        Dim FileName As String      '文件
        Dim sXml As String
        Dim sTxt As String
        Dim hFile As Long
        
        '获取xml中的字段名称
        FileName = "d:\myData.xml"
        sXml = GetFields(FileName)
        
        '读取txt文件
        FileName = "d:\myData.txt"
        hFile = FreeFile
        Open FileName For Binary As hFile
            '读取文本内容
            sTxt = Space(LOF(hFile))
            Get #hFile, , sTxt
            '加入字段
            sTxt = sXml & vbCrLf & Replace(sTxt, Chr(0), vbNullString)
            '写回文本
            Put #hFile, 1, sTxt
        Close
        '验证
        Shell "C:\WINDOWS\NOTEPAD.EXE " & FileName, vbNormalFocus
        
    End Sub
    准备下班.....
      

  12.   

    UP                UP          UPUPUPUPUPUPUP 
      

  13.   


    我想把上边那个XML 的字段名称和字段类型都写到TXT中,麻烦各位帮我看看哪里错了
    '选择"工程->引用"菜单,钩选: Microsoft xml,6.0'这个函数用来读取xml文件中的字段属性
    Private Function GetFields(xmlFile As String) As String
        Dim oXmlDoc As DOMDocument
        Dim oXmlNodes As IXMLDOMNodeList
        Dim FieldName() As String
        Dim i As Long
        Dim j As Long
        Dim NodeLength As Long
        Dim fieldtype() As String
        
        Set oXmlDoc = New DOMDocument
        oXmlDoc.Load xmlFile
        Set oXmlNodes = oXmlDoc.documentElement.selectNodes(".//Field") 'Field集合
        NodeLength = oXmlNodes.length - 1
        ReDim FieldName(NodeLength)
        ReDim fieldtype(NodeLength)
        
        For i = 0 To NodeLength
        FieldName(i) = oXmlNodes.Item(i).Attributes(1).Text
        fieldtype(i) = oXmlNodes.Item(j).Attributes(2).Text
        '循环Field集合 , Attributes(1).text是一个Field中第二个属性的值
         Next
        'GetFields = Join(FieldName, "#&")
         GetFields = Join(fieldtype, "")
        Set oXmlNodes = Nothing
        Set oXmlDoc = Nothing
    End FunctionPrivate Sub Command1_Click()
        
        Dim FileName As String      '文件
       
        
        Dim sXml As String
        Dim Stype As String
        
        Dim sTxt As String
        Dim hFile As Long
        
        '获取xml中的字段名称
        FileName = "d:\KNA_DPAC_20100308.xml"
        Stype = GetFields(FileName)
        sXml = GetFields(FileName)
        
        '读取txt文件
        FileName = "d:\myData.txt"
        hFile = FreeFile
        Open FileName For Binary As hFile
            '读取文本内容
            sTxt = Space(LOF(hFile))
            Get #hFile, , sTxt
            '加入字段
            sTxt = sXml & vbCrLf & Replace(sTxt, Chr(0), vbNullString)
            
            '写回文本
            Put #hFile, 1, sTxt
        Close
        '验证
        Shell "C:\WINDOWS\NOTEPAD.EXE " & FileName, vbNormalFocus
        
    End Sub
      

  14.   

    GetFields = Join(FieldName, "#&") 什么意思不太懂