• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            一個XML類創(chuàng)建子節(jié)點的問題

            Posted on 2009-10-22 08:04 S.l.e!ep.¢% 閱讀(484) 評論(0)  編輯 收藏 引用 所屬分類: HTML
            網(wǎng)上找了個VBS操作XML的類,代碼如下:
            Class clsXML
            'strFile must be full path to document, ie C:XMLXMLFile.XML
            'objDoc is the XML Object
            Private strFile, objDoc

            '*********************************************************************
            ' Initialization/Termination
            '*********************************************************************

            'Initialize Class Members
            Private Sub Class_Initialize()
            strFile = ""
            End Sub

            'Terminate and unload all created objects
            Private Sub Class_Terminate()
            Set objDoc = Nothing
            End Sub

            '*********************************************************************
            ' Properties
            '*********************************************************************

            'Set XML File and objDoc
            Public Property Let File(str)
            Set objDoc = CreateObject("Microsoft.XMLDOM")
            objDoc.async = False
            strFile = str
            objDoc.Load strFile
            End Property

            'Get XML File
            Public Property Get File()
            File = strFile
            End Property

            '*********************************************************************
            ' Functions
            '*********************************************************************

            'Create Blank XML File, set current obj File to newly created file
            Public Function createFile(strPath, strRoot)
            Dim objFSO, objTextFile
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Set objTextFile = objFSO.CreateTextFile(strPath, True)
            objTextFile.WriteLine("<?xml version=""1.0"" encoding=""gb2312""?>")
            objTextFile.WriteLine("<" & strRoot & "/>")
            objTextFile.Close
            Me.File = strPath
            Set objTextFile = Nothing
            Set objFSO = Nothing
            End Function

            'Get XML Field(s) based on XPath input from root node
            Public Function getField(strXPath)
            Dim objNodeList, arrResponse(), i
            Set objNodeList = objDoc.documentElement.selectNodes(strXPath)
            ReDim arrResponse(objNodeList.length)
            For i = 0 To objNodeList.length - 1
            arrResponse(i) = objNodeList.Dir(i).Text
            Next
            getField = arrResponse
            End Function

            'Update existing node(s) based on XPath specs
            Public Function updateField(strXPath, strData)
            Dim objField
            For Each objField In objDoc.documentElement.selectNodes(strXPath)
            objField.DirName= strData
            Next
            objDoc.Save strFile
            Set objField = Nothing
            updateField = True
            End Function

            'Create node directly under root
            Public Function createRootChild(strNode)
            Dim objChild
            Set objChild = objDoc.createNode(1, strNode, "")
            objDoc.documentElement.appendChild(objChild)
            objDoc.Save strFile
            Set objChild = Nothing
            End Function

            'Create a child node under root node with attributes
            Public Function createRootNodeWAttr(strNode, attr, val)
            Dim objChild, objAttr
            Set objChild = objDoc.createNode(1, strNode, "")
            If IsArray(attr) And IsArray(val) Then
            If UBound(attr)-LBound(attr) <> UBound(val)-LBound(val) Then
            Exit Function
            Else
            Dim i
            For i = LBound(attr) To UBound(attr)
            Set objAttr = objDoc.createAttribute(attr(i))
            objChild.setAttribute attr(i), val(i)
            Next
            End If
            Else
            Set objAttr = objDoc.createAttribute(attr)
            objChild.setAttribute attr, val
            End If
            objDoc.documentElement.appendChild(objChild)
            objDoc.Save strFile
            Set objChild = Nothing
            End Function

            'Create a child node under the specified XPath Node
            Public Function createChildNode(strXPath, strNode)
            Dim objParent, objChild
            For Each objParent In objDoc.documentElement.selectNodes(strXPath)
            Set objChild = objDoc.createNode(1, strNode, "")
            objParent.appendChild(objChild)
            Next
            objDoc.Save strFile
            Set objParent = Nothing
            Set objChild = Nothing
            End Function

            'Create a child node(s) under the specified XPath Node with attributes
            Public Function createChildNodeWAttr(strXPath, strNode, attr, val)
            Dim objParent, objChild, objAttr
            For Each objParent In objDoc.documentElement.selectNodes(strXPath)
            Set objChild = objDoc.createNode(1, strNode, "")
            If IsArray(attr) And IsArray(val) Then
            If UBound(attr)-LBound(attr) <> UBound(val)-LBound(val) Then
            Exit Function
            Else
            Dim i
            For i = LBound(attr) To UBound(attr)
            Set objAttr = objDoc.createAttribute(attr(i))
            objChild.SetAttribute attr(i), val(i)
            Next
            End If
            Else
            Set objAttr = objDoc.createAttribute(attr)
            objChild.setAttribute attr, val
            End If
            objParent.appendChild(objChild)
            Next
            objDoc.Save strFile
            Set objParent = Nothing
            Set objChild = Nothing
            End Function

            'Delete the node specified by the XPath
            Public Function deleteNode(strXPath)
            Dim objOld
            For Each objOld In objDoc.documentElement.selectNodes(strXPath)
            objDoc.documentElement.removeChild objOld
            Next
            objDoc.Save strFile
            Set objOld = Nothing
            End Function
            End Class


            然后,我參照上面的類寫了個目錄島,代碼如下:

            Dim objXML, strPath, str

            Set objXML = New clsXML

            strPath = "c:Dir.xml"

            objXML.createFile strPath, "Dir_Island"
            '<!-- 創(chuàng)建3個根節(jié)點 -->
            objXML.createRootNodeWAttr "Dir", Array("DirID","DirName", "DirOwner", "DirDescption","CreateTime"), _
            Array(1,"Dir1", "Lili", "a",now)
            objXML.createRootNodeWAttr "Dir", Array("DirID","DirName", "DirOwner", "DirDescption","CreateTime"), _
            Array(2,"Dir2", "Jony", "b",now)
            objXML.createRootNodeWAttr "Dir", Array("DirID","DirName", "DirOwner", "DirDescption","CreateTime"), _
            Array(3,"Dir3", "Self", "c",now)
            '<!-- 在第一個根節(jié)點中創(chuàng)建1個子節(jié)點可以成功 -->
            objXML.createChildNodeWAttr "Dir[@DirName='Dir1']", "Dir", _
            Array("DirID","DirName", "DirOwner", "DirDescption","CreateTime"), _
            Array(4,"Sub_Dir1", "Jony1", "bb",now)
            '<!-- 在剛才創(chuàng)建的子節(jié)點中再創(chuàng)建1個子節(jié)點怎么就不行? -->
            objXML.createChildNodeWAttr "Dir[@DirName='Sub_Dir1']", "Dir", _
            Array("DirID","DirName", "DirOwner", "DirDescption","CreateTime"), _
            Array(5,"Sub_Sub_Dir1", "Jony2", "bbb",now)

            Set objXML = Nothing

            '程序運行完后生成的XML文件如下:
            ' <?xml version="1.0" encoding="gb2312" ?>
            '- <Dir_Island>
            ' - <Dir DirID="1" DirName="Dir1" DirOwner="Lili" DirDescption="a" CreateTime="3/30/2004 9:03:11 AM">
            ' <Dir DirID="4" DirName="Sub_Dir1" DirOwner="Jony1" DirDescption="bb" CreateTime="3/30/2004 9:03:11 AM" />
            ' </Dir>
            ' <Dir DirID="2" DirName="Dir2" DirOwner="Jony" DirDescption="b" CreateTime="3/30/2004 9:03:11 AM" />
            ' <Dir DirID="3" DirName="Dir3" DirOwner="Self" DirDescption="c" CreateTime="3/30/2004 9:03:11 AM" />
            ' </Dir_Island>

            '為什么不是這樣的呢?

            ' <?xml version="1.0" encoding="gb2312" ?>
            '- <Dir_Island>
            ' - <Dir DirID="1" DirName="Dir1" DirOwner="Lili" DirDescption="a" CreateTime="3/30/2004 9:03:11 AM">
            ' <Dir DirID="4" DirName="Sub_Dir1" DirOwner="Jony1" DirDescption="bb" CreateTime="3/30/2004 9:03:11 AM">
            ' <Dir DirID="5" DirName="Sub_Sub_Dir1" DirOwner="Jony2" DirDescption="bbb" CreateTime="3/30/2004 9:03:11 AM" />
            ' </Dir>
            ' </Dir>
            ' <Dir DirID="2" DirName="Dir2" DirOwner="Jony" DirDescption="b" CreateTime="3/30/2004 9:03:11 AM" />
            ' <Dir DirID="3" DirName="Dir3" DirOwner="Self" DirDescption="c" CreateTime="3/30/2004 9:03:11 AM" />
            ' </Dir_Island>

            以上代碼需要測試的話請各位連同類和代碼COPY到本地新建一個VBS文檔運行,運行結(jié)果在你本機C:Dir.xml中顯示。
            請教各位XML高手啊。
            日本欧美久久久久免费播放网 | 精品久久久久久无码人妻热| 久久99精品久久久久婷婷| 久久久久无码精品国产不卡| 国内精品久久久久久野外| 久久久久久国产精品美女| 久久久久久精品成人免费图片| 久久久免费精品re6| 久久精品综合网| 99久久久精品| 久久精品国产欧美日韩99热| 久久久久99精品成人片三人毛片| 狠狠狠色丁香婷婷综合久久五月| 69国产成人综合久久精品| 久久亚洲私人国产精品vA| 漂亮人妻被黑人久久精品| 久久久久无码精品国产不卡| 久久精品国产亚洲av水果派| 久久国产精品77777| 精品999久久久久久中文字幕| 国产91色综合久久免费分享| 66精品综合久久久久久久| 性做久久久久久久久久久| 久久亚洲中文字幕精品有坂深雪 | 久久精品国产一区二区三区不卡 | 久久久久黑人强伦姧人妻| 婷婷久久综合九色综合绿巨人| 午夜视频久久久久一区| 狠狠色噜噜色狠狠狠综合久久| 国产免费久久久久久无码| 国产精品久久网| 亚洲国产精品久久久久| 日韩欧美亚洲综合久久影院Ds| 久久久久久精品无码人妻| 俺来也俺去啦久久综合网| 国产精品欧美久久久久天天影视 | 伊人久久大香线蕉av不变影院| 久久综合88熟人妻| 国产L精品国产亚洲区久久| 久久这里的只有是精品23| 久久国产欧美日韩精品|