nmgwddj 发表于 2011-12-4 02:30:05

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

本帖最后由 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的值读取出来。搞了一夜了{:face (456):}

blackbaby 发表于 2011-12-4 04:23:27

$objRootsite = $objXML.documentElement.selectSingleNode("//DiskSet")
不要问我为什么。。。。偶尔看到的。

nmgwddj 发表于 2011-12-4 07:10:49

{:face (301):}莫非真的是老天爷戏弄我,等了一晚上,终于有答案了,而且还是那么的……那么的……不说了,想哭!!

lpxx 发表于 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

davy_chen 发表于 2012-1-18 16:15:30

看了半天了,才看到此帖子,终于看到点希望了,但是问题还是多多啊。
页: [1]
查看完整版本: 如何读取只有三个节点的xml文件,看下此XML是否是标准的xml该如何读取(已解决)