<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: работа с XML с помощью компонента Chilkat XML]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=2900&amp;type=atom" />
	<updated>2009-03-10T18:29:21Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=2900</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с XML с помощью компонента Chilkat XML]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20463#p20463" />
			<content type="html"><![CDATA[<p>Вместе с Chilkat XML поставляется COM-сервер <strong>Chilkat Rss</strong> для обработки RSS лент, документацию по которому можно найти <a href="http://www.chilkatsoft.com/refdoc/xChilkatRssRef.html">здесь</a>.</p><p>Пример загрузки и обхода RSS ленты:<br /></p><div class="codebox"><pre><code>Set oRss = CreateObject(&quot;Chilkat.Rss&quot;)
suc = oRss.DownloadRss(&quot;http://feeds2.feedburner.com/simple-recepty&quot;)
If suc &lt;&gt; 1 Then
    Wscript.Echo oRss.LastErrorText
    WScript.Quit()
End If
Set oChannel = oRss.GetChannel(0)
If oChannel Is Nothing Then
    Wscript.Echo &quot;Нет каналов.&quot;
    WScript.Quit()
End If
&#039; Информация о ленте:
Wscript.Echo oChannel.GetString(&quot;title&quot;)
Wscript.Echo oChannel.GetString(&quot;link&quot;)
Wscript.Echo oChannel.GetString(&quot;description&quot;)
Wscript.Echo
&#039; Обход ленты:
For i = 0 To oChannel.numItems - 1
    Set oItem = oChannel.GetItem(i)
    &#039; Информация об элементе:
    ttl = oItem.GetString(&quot;title&quot;)
    lnk = oItem.GetString(&quot;link&quot;)
    dat = oItem.GetString(&quot;pubDate&quot;)
    
    cats = &quot;&quot; &#039; категории элемента
    For j = 0 To oItem.GetCount(&quot;category&quot;) - 1
        cats = cats &amp; oItem.MGetString(&quot;category&quot;, j) &amp; &quot; &quot;
    Next
    
    Wscript.Echo ttl &amp; &quot; (&quot; &amp; lnk &amp; &quot;) &quot; &amp; dat &amp; &quot; (&quot; &amp; cats &amp; &quot;)&quot;
Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-10T18:29:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20463#p20463</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с XML с помощью компонента Chilkat XML]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20462#p20462" />
			<content type="html"><![CDATA[<p>Сжатие и шифрование узлов:<br /></p><div class="codebox"><pre><code>Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.Tag = &quot;root&quot;
Set xmlM = oXml.NewChild(&quot;catalog&quot;, &quot;&quot;)
xmlM.NewChild2 &quot;one&quot;, &quot;string&quot;
xmlM.NewChild2 &quot;two&quot;, &quot;34.50&quot;
Set xmlG = oXml.NewChild(&quot;list&quot;, &quot;&quot;)
xmlG.NewChild2 &quot;one&quot;, &quot;str&quot;
xmlG.NewChild2 &quot;two&quot;, &quot;34.00&quot;

xmlM.ZipTree()
xmlM.EncryptContent &quot;secretPassword&quot;
WScript.Echo oXml.GetXml()
xmlM.DecryptContent &quot;secretPassword&quot;
suc = xmlM.UnzipTree()

WScript.Echo oXml.GetXml()</code></pre></div><p>Работа с бинарными данными в XML. Пример ниже загружает бинарный файл C:\Temp\test.jpg, помещает его в XML-документ в формате Base64, а затем извлекает из XML-документа и сохраняет на диск как C:\Temp\test1.jpg. Используется объект &quot;Chilkat.CkData&quot;, который есть в поставке компонента Chilkat XML:<br /></p><div class="codebox"><pre><code>Set oData = CreateObject(&quot;Chilkat.CkData&quot;)
oData.LoadFile &quot;C:\Temp\test.jpg&quot;
data = oData.GetBinary()
Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.Tag = &quot;root&quot;
zipFlag = 0 &#039; не сжимать
encryptFlag = 0 &#039; не шифровать
password = &quot;NotUsed&quot;
oXml.SetBinaryContent data, zipFlag, encryptFlag, password
&#039;Wscript.Echo oXml.GetXml()
oXml.SaveBinaryContent &quot;C:\Temp\test1.jpg&quot;, zipFlag, encryptFlag, password</code></pre></div><p>Можно обойтись и без объекта &quot;Chilkat.CkData&quot;:<br /></p><div class="codebox"><pre><code>Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.Tag = &quot;root&quot;
zipFlag = 0 &#039; не сжимать
encryptFlag = 0 &#039; не шифровать
password = &quot;NotUsed&quot;
oXml.SetBinaryContentFromFile &quot;C:\Temp\test.jpg&quot;, zipFlag, encryptFlag, password
Wscript.Echo oXml.GetXml()
oXml.SaveBinaryContent &quot;C:\Temp\test1.jpg&quot;, zipFlag, encryptFlag, password</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-10T17:56:27Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20462#p20462</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: работа с XML с помощью компонента Chilkat XML]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20461#p20461" />
			<content type="html"><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.chilkatsoft.com/xml-activex.asp">Chilkat XML</a> предоставляет простой и удобный функционал для работы с XML. Дистрибутив (msi-инсталлятор) имеет размер порядка 1,1 Мб. Документацию можно найти <a href="http://www.chilkatsoft.com/refdoc/xChilkatXmlRef.html">здесь</a>. Примеры можно найти <a href="http://www.example-code.com/vbscript/xml.asp">здесь</a>.</p><p>См. также <a href="http://www.script-coding.com/XMLDOMscripts.html">MS XML Parser</a>.</p><p>Основные возможности Chilkat XML:<br />* доступ к XML с помощью объектной модели документов (DOM), многочисленные методы обхода документа; поиск и сортировка узлов; добавление атрибутов и их значений к узлам;<br />* zip-сжатие узлов и поддеревьев в памяти;<br />* AES-шифрование содержимого узла;<br />* обработка двоичных данных (таких, как изображения) в пределах файлов XML.</p><p>Образцовый XML-файл для примера:<br /></p><div class="codebox"><pre><code>&lt;CURRENCIES&gt;
&lt;LAST_UPDATE&gt;2007-06-11&lt;/LAST_UPDATE&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Dollar&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;USD&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;USA&lt;/COUNTRY&gt;
&lt;RATE&gt;4.187&lt;/RATE&gt;
&lt;CHANGE&gt;-0.238&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Pound&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;GBP&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Great Britain&lt;/COUNTRY&gt;
&lt;RATE&gt;8.2356&lt;/RATE&gt;
&lt;CHANGE&gt;-0.426&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Yen&lt;/NAME&gt;
&lt;UNIT&gt;100&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;JPY&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Japan&lt;/COUNTRY&gt;
&lt;RATE&gt;3.4401&lt;/RATE&gt;
&lt;CHANGE&gt;-0.784&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Euro&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;EUR&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;EMU&lt;/COUNTRY&gt;
&lt;RATE&gt;5.5892&lt;/RATE&gt;
&lt;CHANGE&gt;-0.599&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Dollar&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;AUD&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Australia&lt;/COUNTRY&gt;
&lt;RATE&gt;3.5288&lt;/RATE&gt;
&lt;CHANGE&gt;-0.096&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Dollar&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;CAD&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Canada&lt;/COUNTRY&gt;
&lt;RATE&gt;3.9405&lt;/RATE&gt;
&lt;CHANGE&gt;-0.139&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;krone&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;DKK&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Denmark&lt;/COUNTRY&gt;
&lt;RATE&gt;0.7508&lt;/RATE&gt;
&lt;CHANGE&gt;-0.583&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Krone&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;NOK&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Norway&lt;/COUNTRY&gt;
&lt;RATE&gt;0.6883&lt;/RATE&gt;
&lt;CHANGE&gt;-1.078&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Rand&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;ZAR&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;South Africa&lt;/COUNTRY&gt;
&lt;RATE&gt;0.5764&lt;/RATE&gt;
&lt;CHANGE&gt;0.017&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Krona&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;SEK&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Sweden&lt;/COUNTRY&gt;
&lt;RATE&gt;0.5988&lt;/RATE&gt;
&lt;CHANGE&gt;-0.499&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Franc&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;CHF&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Switzerland&lt;/COUNTRY&gt;
&lt;RATE&gt;3.3807&lt;/RATE&gt;
&lt;CHANGE&gt;-1.068&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Dinar&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;JOD&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Jordan&lt;/COUNTRY&gt;
&lt;RATE&gt;5.9088&lt;/RATE&gt;
&lt;CHANGE&gt;-0.253&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Pound&lt;/NAME&gt;
&lt;UNIT&gt;10&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;LBP&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Lebanon&lt;/COUNTRY&gt;
&lt;RATE&gt;0.0278&lt;/RATE&gt;
&lt;CHANGE&gt;0&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;

&lt;CURRENCY&gt;
&lt;NAME&gt;Pound&lt;/NAME&gt;
&lt;UNIT&gt;1&lt;/UNIT&gt;
&lt;CURRENCYCODE&gt;EGP&lt;/CURRENCYCODE&gt;
&lt;COUNTRY&gt;Egypt&lt;/COUNTRY&gt;
&lt;RATE&gt;0.7357&lt;/RATE&gt;
&lt;CHANGE&gt;-0.258&lt;/CHANGE&gt;
&lt;/CURRENCY&gt;
&lt;/CURRENCIES&gt;</code></pre></div><p>Форматирование XML с отступами:<br /></p><div class="codebox"><pre><code>Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.LoadXml &quot;&lt;root&gt;&lt;company&gt;&lt;name&gt;Chilkat Software, Inc.&lt;/name&gt;&lt;url&gt;http://www.chilkatsoft.com/&lt;/url&gt;&lt;phone&gt;630-784-9670&lt;/phone&gt;&lt;/company&gt;&lt;/root&gt;&quot;
WScript.Echo oXml.GetXml()</code></pre></div><p>Поиск и чтение нужных узлов:<br /></p><div class="codebox"><pre><code>Set oXml_ = CreateObject(&quot;Chilkat.Xml&quot;)
&#039;oXml_.LoadXmlFile(&quot;c:\temp\test.xml&quot;)
Set oXml = oXml_.HttpGet(&quot;http://www.chilkatsoft.com/testData/currency.xml&quot;)
For i = 0 To oXml.NumChildrenHavingTag(&quot;CURRENCY&quot;) - 1 &#039; количество узлов &quot;CURRENCY&quot;
    Set curr = oXml.GetNthChildWithTag(&quot;CURRENCY&quot;, i) &#039; получить n-ный узел &quot;CURRENCY&quot;
    WScript.Echo &quot;----&quot;
    WScript.Echo &quot;Name: &quot; &amp; curr.GetChildContent(&quot;NAME&quot;) &#039; содержимое дочернего узла
    WScript.Echo &quot;Code: &quot; &amp; curr.GetChildContent(&quot;CURRENCYCODE&quot;)
    WScript.Echo &quot;Country: &quot; &amp; curr.GetChildContent(&quot;COUNTRY&quot;)
Next</code></pre></div><p>Создание узлов и атрибутов:<br /></p><div class="codebox"><pre><code>Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.Tag = &quot;root&quot;
Set xNode0 = oXml.NewChild(&quot;products&quot;, &quot;&quot;)

Set xChild = xNode0.NewChild(&quot;one&quot;, &quot;content of node&quot;)
xChild.AddAttribute &quot;price&quot;, &quot;0.99&quot;

Set xChild = xNode0.NewChild(&quot;two&quot;, &quot;&quot;)
xChild.AddAttribute &quot;price&quot;, &quot;10.99&quot;

WSCript.Echo oXml.GetXml()</code></pre></div><p>Ещё один способ обхода документа:<br /></p><div class="codebox"><pre><code>Set oXml = CreateObject(&quot;Chilkat.Xml&quot;)
oXml.LoadXmlFile &quot;C:\Temp\test.xml&quot;
Set oNode = oXml.FirstChild()
Do While Not (oNode Is Nothing )
    WScript.Echo oNode.GetChildContent(&quot;NAME&quot;)
    Set oNode = oNode.NextSibling()
Loop</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-10T17:56:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20461#p20461</id>
		</entry>
</feed>
