1 (изменено: SlaDER, 2010-12-08 15:57:46)

Тема: VBS: XMLDOM

Привет всем есть XML от Remote Desktop Connection Manager.

<?xml version="1.0" encoding="utf-8"?>
<RDCMan schemaVersion="1">
    <version>2.2</version>
    <file>
        <properties>
            <name>Название</name>
            <expanded>True</expanded>
            <comment/>
            <logonCredentials inherit="FromParent"/>
            <connectionSettings inherit="FromParent"/>
            <gatewaySettings inherit="FromParent"/>
            <remoteDesktop inherit="FromParent"/>
            <localResources inherit="FromParent"/>
            <securitySettings inherit="FromParent"/>
            <displaySettings inherit="FromParent"/>
        </properties>
        <group>

        </group>
    </file>
</RDCMan>

Задача добавлять в group

         <server>
                    <name>Имя_сервера</name>
                    <displayName>Отображаемое имя сервера</displayName>
                    <comment />
                    <logonCredentials inherit="FromParent" />
                    <connectionSettings inherit="FromParent" />
                    <gatewaySettings inherit="FromParent" />
                    <remoteDesktop inherit="FromParent" />
                    <localResources inherit="FromParent" />
                    <securitySettings inherit="FromParent" />
                    <displaySettings inherit="FromParent" />
         </server>

Пытаюсь так:

Set objxmlDoc = CreateObject( "Microsoft.XMLDOM" )
objxmlDoc.Async = "False"
objxmlDoc.Load( "c:\Windows.rdg" )

strQuery = "RDCMan/file/group"

Set colNodes = objxmlDoc.selectNodes(strQuery)

Set newXML = objxmlDoc.createElement("Server")

Set root = objxmlDoc.documentElement
root.appendChild(newXML)

В итоге идет добавление в конец, как можно зацепиться за group и добавить child в неё?

2

Re: VBS: XMLDOM

Использовать не «root.appendChild()», а выбранный узел:

Option Explicit

Dim strQuery

With WScript.CreateObject("MSXML2.DOMDocument") ' "Microsoft.XMLDOM")
    .async = False
    
    If .load("E:\Песочница\0020\0001.rdp") Then
        strQuery = "RDCMan/file/group"
        
        .setProperty "SelectionLanguage", "XPath"
        .selectNodes(strQuery).item(0).appendChild .createElement("server")
        
        WScript.Echo .xml
    End If
End With

WScript.Quit 0

У Вас ошибка: указан тэг «<server>», а узел создаётся «Server».

3

Re: VBS: XMLDOM

Спасибо огромное! А можно просветить насчет MSXML2.DOMDocument и Microsoft.XMLDOM, что лучше использовать?

4

Re: VBS: XMLDOM

Microsoft прямо рекомендует использовать даже «версионный» ProgID, не «version-independent»: начиная с GUID and ProgID Information — и внутрь по дереву. Своего мнения на этот счёт у меня нет — не работал.