Многие програмы хранят данные/настройки и т. п. в 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>

