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读写文本文件的方法随便在网上找有很多.
不知道你会到什么程度,你的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方法分别读写文本,代码就不写了,忙...
直接读取,字符处理。(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
s1 = Trim(Input(LOF(1), #1)) 是读出文本中所有的字符吗?
参考你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
'读取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 准备下班.....
UP UP UPUPUPUPUPUPUP
我想把上边那个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()
把你的合成后的格式踢上来。
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#
或者直接把得到的文本当做字符串来分析,找到cnName出现的位置,截取字符串,然后找下一个出现的位置;
2.读取txt文件,重新写入.
xHttp.open "get", strPara, False
xHttp.sendIf xHttp.Status = 200 Then
strRespones = xHttp.responseText'得到的xml内容字符串
'…… 分析
end if读写文本文件的方法随便在网上找有很多.
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方法分别读写文本,代码就不写了,忙...
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
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
准备下班.....
我想把上边那个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