Привет.
Нашёл VBScript который загружает xml-файл, сверяет его содержимое с
r-файлом (
R-Schema) и в зависимости от совпадения показывает содержимое xml-файла или выдаёт ошибку.
Попробовал переписать этот скрипт на AutoIt:
Пока xml-файл правильный, проблем не возникает.
Если в нём изменить например "<Collection>...</Collection>" на "<Collections>...</Collections>", VBS выдаст ошибку, AutoIt промолчит.
Если изменить только "<Collection>" на "<Collections>" VBS и AutoIt выдают разные ошибки.
Интересно почему и как бы это исправить?
Нашёл VBScript который загружает xml-файл, сверяет его содержимое с


Код:
set xmldoc = CreateObject("Msxml2.FreeThreadedDOMDocument")
set SchemaCache = CreateObject("Msxml2.XMLSchemaCache")
xmldoc.async = False
xmldoc.validateOnParse = True
SchemaCache.Add "x-schema:books", "collection.xdr"
Set xmldoc.schemas = SchemaCache
xmldoc.Load("collection.xml")
If (xmldoc.parseError.errorCode <> 0) Then
Set myErr = xmldoc.parseError
MsgBox (myErr.reason)
Else
MsgBox xmldoc.xml
End If
Код:
<?xml version='1.0'?>
<Collection xmlns="x-schema:books">
<Book>
<Title>Lover Birds</Title>
<Author>Cynthia Randall</Author>
<Publisher>Lucerne Publishing</Publisher>
</Book>
</Collection>
Код:
<?xml version="1.0"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data">
<!-- AttributeType name="xmlns" -->
<ElementType name="Title"/>
<ElementType name="Author"/>
<ElementType name="Publisher"/>
<ElementType name="Book" model="closed">
<element type="Title"/>
<element type="Author"/>
<element type="Publisher"/>
</ElementType>
<ElementType name="Collection" model="closed">
<element type="Book"/>
</ElementType>
</Schema>
Попробовал переписать этот скрипт на AutoIt:
Код:
$xmldoc = ObjCreate('Msxml2.FreeThreadedDOMDocument')
$SchemaCache = ObjCreate('Msxml2.XMLSchemaCache')
$xmldoc.async = False
$xmldoc.validateOnParse = True
$SchemaCache.Add('x-schema:books', 'collection.xdr')
$xmldoc.schemas = $SchemaCache
$xmldoc.load('collection.xml')
If $xmldoc.parseError.errorCode <> 0 Then
$myErr = $xmldoc.parseError
MsgBox(16, '', $myErr.reason)
Else
MsgBox(0, '', $xmldoc.xml)
EndIf
Пока xml-файл правильный, проблем не возникает.
Если в нём изменить например "<Collection>...</Collection>" на "<Collections>...</Collections>", VBS выдаст ошибку, AutoIt промолчит.
Если изменить только "<Collection>" на "<Collections>" VBS и AutoIt выдают разные ошибки.
Интересно почему и как бы это исправить?