Генерация xml-документов с помощью VBScript

Стандартный

Многие програмы хранят данные/настройки и т. п. в xml-документах. Часто при тестировании необходимо проверить что программа корректно ведет себя на довольно большом объеме этих саммых данных. Для этого бывает достаточно просто сгенерировать «большой» xml-документ. В принципе, для этого существуют специальные утилиты, но мне это проще сделать с помощью VBScript :) Собственно, о том как это сделать, я и собираюсь рассказать.

Итак, допустим, у нас есть программа, которая работает со списком контактов хранимым в xml-документе, и нужно проверить, как эта программа поведет себя при размере книги ~2000 контактов. xml-документ выглядет примерно следующим образом:

<?xml version="1.0"?>
<phonebook>
    <person>
        <lastname>Иванов</lastname>
        <firstname>Иван</firstname>
        <phone type="home">123-345-567</phone>
        <phone type="mobile">+7 987 654 3210</phone>
        <email>ivanov@mail.ru</email>
</person>
</phonebook>

Нужно добавить в этот документ еще 2000 записей. Для этого подойдет такой скрипт:

Option Explicit
'Константа, содержащая путь к xml-документу
Const strXMLSource = ".\phonebook.xml"
'Объявляем переменные
Dim xmlDocument, xmlPhonebook, xmlNewPerson, xmlNewNode
Dim i
'Открываем xml-документ
Set xmlDocument = CreateObject("Msxml2.DOMDocument")
xmlDocument.async = False
 
If (xmlDocument.Load(strXMLSource) = 0) Then
    WScript.Echo "Failed to open xml-file"
    WScript.Quit (255)
End If
'Выбираем узел phonebook
xmlDocument.setProperty "SelectionLanguage", "XPath"
Set xmlPhonebook = xmlDocument.selectSingleNode ("//phonebook")
'Добавляем 2000 новых записей
For i = 1 To 2000
    'Создаем узел контакта
    Set xmlNewPerson = xmlDocument.createNode (1, "person", "")
    'Добавляем Last name
    Set xmlNewNode = xmlDocument.createNode (1, "lastname", "")
    xmlNewNode.text = "testUserLastName" & i
    xmlNewPerson.appendChild xmlNewNode
    'Добавляем First name
    Set xmlNewNode = xmlDocument.createNode (1, "firstname", "")
    xmlNewNode.text = "testUserFirstName" & i
    xmlNewPerson.appendChild xmlNewNode
    'Добавляем случайный 6-значный домашний телефон
    Set xmlNewNode = xmlDocument.createNode (1, "phone", "")
    xmlNewNode.text = Int(900000 * Rnd + 100000)
    xmlNewNode.setAttribute "type", "home"
    xmlNewPerson.appendChild xmlNewNode
    'Добавляем случайный 11-значный мобильный телефон
    Set xmlNewNode = xmlDocument.createNode (1, "phone", "")
    xmlNewNode.text = "+7 " & Int(9000000000 * Rnd + 1000000000)
    xmlNewNode.setAttribute "type", "mobile"
    xmlNewPerson.appendChild xmlNewNode
    'Добавляем e-mail
    Set xmlNewNode = xmlDocument.createNode (1, "email", "")
    xmlNewNode.text = "testUserLastName" & i & "@mail.ru"
    xmlNewPerson.appendChild xmlNewNode
    'Добавляем новый контакт в книгу
    xmlPhonebook.appendChild xmlNewPerson
Next
'Сохраняем изменения
xmlDocument.save strXMLSource

Скрипт и phonebook.xml должны находиться в одном каталоге, иначе надо изменить strXMLSource на верное значение. После запуска скрипта в phonebook.xml должно будет появиться 2000 новых записей вида:

<person>
<lastname>testUserLastName1</lastname>
<firstname>testUserFirstName1</firstname>
<phone type="home">734992</phone>
<phone type="mobile">+7 5800816178</phone>
<email>testUserLastName1@mail.ru</email>
</person>
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s