找回密码
 加入
搜索
查看: 4300|回复: 4

[系统综合] 如何读取只有三个节点的xml文件,看下此XML是否是标准的xml该如何读取(已解决)

[复制链接]
发表于 2011-12-4 02:30:05 | 显示全部楼层 |阅读模式
本帖最后由 nmgwddj 于 2011-12-4 07:11 编辑

xml文件如下
<DiskSet>
    <Disk>
        <DiskID>303</DiskID>
        <FileSize>1024</FileSize>
        <LockMemory>0</LockMemory>
        <DiskState>4</DiskState>
        <ManagerVersionID>0</ManagerVersionID>
        <ManagerIP>0</ManagerIP>
        <VTYear>2011</VTYear>
        <VTMonth>12</VTMonth>
        <VTDay>3</VTDay>
        <VTHour>12</VTHour>
        <VTMinute>25</VTMinute>
        <VTSecond>36</VTSecond>
        <VTMilliseconds>906</VTMilliseconds>
        <DiskName>SYS</DiskName>
        <DiskPath>E:\Image\SYS\T201112031225360890.img</DiskPath>
        <VersionPath>E:\Image\SYS\T201112031225360890.xml</VersionPath>
    </Disk>
    <Disk>
        <DiskID>304</DiskID>
        <FileSize>1024</FileSize>
        <LockMemory>0</LockMemory>
        <DiskState>4</DiskState>
        <ManagerVersionID>0</ManagerVersionID>
        <ManagerIP>0</ManagerIP>
        <VTYear>2011</VTYear>
        <VTMonth>12</VTMonth>
        <VTDay>3</VTDay>
        <VTHour>18</VTHour>
        <VTMinute>19</VTMinute>
        <VTSecond>58</VTSecond>
        <VTMilliseconds>875</VTMilliseconds>
        <DiskName>Test</DiskName>
        <DiskPath>E:\Image\Test\T201112031819580750.img</DiskPath>
        <VersionPath>E:\Image\Test\T201112031819580750.xml</VersionPath>
    </Disk>
</DiskSet>
代码如下,我运行了楞是报错,尝试了各种方式。。。
$strSourceFile = 'DiskConfig.xml'
R_xml()
Func R_xml()
        $objXML = ObjCreate("Microsoft.XMLDOM")
        $sFile = $objXML.load($strSourceFile)
        If Not $sFile Then
                MsgBox(16, '', "加载" & $strSourceFile & "失败,文件不存在!!!")
        Else
                $objRootsite = $objXML.documentElement.selectSingleNode("DiskSet")
                $AllNodesNum = $objRootsite.childNodes.length - 1
                If $AllNodesNum < 0 Then
                        MsgBox(0, '', '没有找到文件')
                Else
                        Local $temp
                        For $i = 0 To $AllNodesNum
                                $id = $i + 1
                                $DiskPath = $objRootsite.childNodes.item($i).childNodes.item(15).text
                                $temp &= $DiskPath & @CRLF
                        Next
                        MsgBox(0, '', $temp)
                EndIf
        EndIf
EndFunc   ;==>R_xml

我只是想把每一个Disk下面的每个DiskPath的值读取出来。搞了一夜了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-12-4 04:23:27 | 显示全部楼层
$objRootsite = $objXML.documentElement.selectSingleNode("//DiskSet")
不要问我为什么。。。。偶尔看到的。
 楼主| 发表于 2011-12-4 07:10:49 | 显示全部楼层
莫非真的是老天爷戏弄我,等了一晚上,终于有答案了,而且还是那么的……那么的……不说了,想哭!!
发表于 2011-12-4 10:29:44 | 显示全部楼层
我记得以前在论坛里学的好像是通过_XMLDomWrapper读取的,好像是
#include <_XMLDomWrapper.au3>
$XML = "DiskConfig.xml"
_XMLFileOpen($XML) 
$t0 = _XMLGetValue("/DiskSet/Disk/DiskPath")
For $k = 1 To UBound($t0) - 1
        MsgBox(0, 0, $t0[$k])
Next
发表于 2012-1-18 16:15:30 | 显示全部楼层
看了半天了,才看到此帖子,终于看到点希望了,但是问题还是多多啊。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-19 16:40 , Processed in 0.174223 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表