我这里有一个其他程序导出的aa.xml文件,内容如下:
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
<xs:complexType>
<xs:element name="a1" type="xs:string" minOccurs="0" />
<xs:element name="a2" type="xs:string" minOccurs="0" />
........
</xs:complexType>
</xs:element>
</xs:schema>
<COMMON>
<aa>1 </aa>
<bb>2 </bb>
</COMMON>
</NewDataSet>
对于xml没接触过,想获取COMMON节点的内容,好像见到说第一行要有
<?xml version="1.0" encoding="gb2312"?>
于是通过以下先获取aa.xml内容然后再生成bb.xml的方式加入第一行
Function LoadFile(file)
Dim objStream
On Error Resume Next
Set objStream = Server.CreateObject("ADODB.Stream")
With objStream
.Type = 2
.Mode = 3
.Open
.LoadFromFile Server.MapPath(File)
.Charset = "GB2312"
.Position = 2
LoadFile = .ReadText
.Close
End With
Set objStream = Nothing
End Function
'通过LoadFile获取aa.xml文件内容
xmltxt=LoadFile("aa.xml")
'生成bb.xml
xmlfile=server.mappath("bb.xml")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(xmlfile,True)
MyFile.WriteLine(" <?xml version=""1.0"" encoding=""gb2312""?>")
MyFile.WriteLine(xmltxt)
MyFile.Close
现在出现的问题是:
我在读取这个bb.xml内容的时候报错,但是如果把bb.xml用记事本打开然后什么都不动直接再保存一下就能正常使用了,实际要求中没办法做到将每个文件都进行打开保存这样操作一遍,不知道问题出在哪,弄了两天了都没解决,请各位帮忙指点一下.
另外如果我直接生成bb.xml内容的话能读
'生成bb.xml及内容
xmlfile=server.mappath("bb.xml")
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile(xmlfile,True)
MyFile.WriteLine(" <NewDataSet>")
MyFile.WriteLine(" <COMMON>")
MyFile.WriteLine(" <aa>测试 </aa>")
MyFile.WriteLine(" <bb>测试1 </bb>")
MyFile.WriteLine(" </COMMON>")
MyFile.WriteLine(" </NewDataSet>")
MyFile.Close
'读取bb.xml
SettingFile="bb.xml"
Dim objXML,objRoot,Total,I
Set objXML=Server.CreateObject("Microsoft.XMLDOM")
objXML.async=False
objXML.load (Server.Mappath(SettingFile))
Set objRoot=objXML.selectsinglenode("NewDataSet/COMMON")
if isobject(objRoot)=false then
Response.write "文件读取失败"
end if
Total=objRoot.childnodes.length '//就是这句报错: (0x800A01A8)缺少对象
ReDim Site_Info(Total-1)
For I=0 To Total-1
Site_info(i)=objRoot.childnodes(i).text
Response.Write "site_info("&i&")="&site_info(i)&" <br>"
Next
Set objRoot=Nothing
Set objXML=Nothing
看上去问题应该出在
...
MyFile.WriteLine(xmltxt)
....
xmltxt是通过ADODB.Stream获取的后赋值的一个变量,我用FSO也试过,仍然存在上述问题,是XML编码格式的问题? 为什么同样方式生成的xml文件(内容是直接写的不是通过赋值到变量)就行呢,希望能得到指点,谢谢!
有人愿意帮忙吗? 愿意支付酬劳,QQ: 3 8 6 0 1 9 7
[ 本帖最后由 hellolans 于 2008-6-18 22:32 编辑 ]