- Ошибка при создании ком-объекта Msxml2.DOMDocument
- Соединение с COM-сервером
- Сценарии объектной модели документа DOM XML средствами OLE-Automation
- MS XML Parser как OLE-сервер
- Пример XML-документа
- Загрузка XML-документа, отслеживание ошибок
- Обход дерева элементов
- Получение информации о текущем узле дерева XML-документа
- Поиск и отбор узлов
- Создание, модификация и запись XML-документов
- Обработка поддеревьев стилевыми таблицами
- Прочие свойства и методы
Ошибка при создании ком-объекта Msxml2.DOMDocument
Ошибка при создании COM объекта
Подскажите пожалуйста в чем может быть причина. Connector = Новый.
Ошибка при создании объекта Excel.Application
Здравствуйте. Делаю собственную конфигурацию в 1С8.3. Есть несколько обработок, которые выводят.
Ошибка при создании нового документа: Поле объекта не обнаружено (srcElement)
Здравствуйте. Создаю программно новый документ ЭлектронноеПисьмо. Нужно передать текст письма.
Свойство у объекта MSXML2.DOMDocument, чтобы каждый новый тэг писался с красной строки
добрый день у меня такой вопрос есть: Я создаю xml-файл с помощью MSXML2.DOMDocument. И если.
Stavrius, 1С 7.7 ?
Зачем тебе Msxml2.DOMDocument ?
Добавлено через 39 секунд
Dethmontt, для выгрузки данных в Бухгалтерию
Добавлено через 43 секунды
_ЕГОР_, как его можно создать ?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Msxml2.DOMDocument — Access is denied
var currXML = new ActiveXObject(‘Msxml2.DOMDocument.4.0’); currXML.async = false;.
объект Msxml2.DOMDocument, метод load
Hello, All! Подскажите кто-нибудь почему у меня не получается загрузить xml-документ? Причем.
создание програмно MSXML2.DomDocument на win2000servSP4
скачал с РСДН скрипт дерева. разработал на вин2003сервер всё работает обалденно. думаю ну.
Парсинг XML юзаем Msxml2 (DOMDocument.6.0)
За основу взята тема https://www.cyberforum.ru/vbscript-wsh/thread191330.html Цель: вытащить.
Ошибка при создании объекта
Только начал учить С#, делаю все по книге. using System; class Animal < Animal Barsik; .
Ошибка при создании объекта
Здравствуйте, товарищи. Работаю в vba в excel. Windows 10, 64bit. При попытке создать экземпляр.
Источник
Соединение с COM-сервером
База лежит в PostgreSQL на Linux.
Сделал нормальный обмен данными через файл обмена.
Все работает. Но достало все руками делать.
Решил напрямую из базы в базу.
В общем, если база под Windows(MS SQL или файловая), то обмен без промежуточного файла
работает замечательно.
А вот если Linux, то выдается сообщение
«Ошибка при создании COM-объекта Msxml2.DOMDocument»
и затем, при попытке соединения с базой, выдантся сообщение —
«При попытке соединения с COM-сервером произошла следующая ошибка:
<ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13796)>: Ошибка при вызове конструктора (COMОбъект): COM-объекты поддерживается только в операционных системах Windows»
Есть решение этой проблемы?
Не знаток Линукса. но одно знаю точно, отличие «универсального обмена» через файл от НЕ через файл только в том, что в случае «не через файл» — файл все равно создается, а точнее не файл а ЗаписьXML, и его чтение запускается в базе-приемнике, которую в свою очередь получают по КОМУ. COMConnector
Чтение в приемнике производит аналогичная обработка УниверсальныйОбмен, только в режиме загрузки. Так что тебе нужна dll-ка, которая позволит в Линуксе сделать ComConnect. Если такие есть — подключить ее и немного дописать код обработок в обеих базах.
А чем файлы не нравятся?
Я отвечал тебе на (4). Линукс не поддерживает КОМ.
Но можно наваять ВК, которая по TCP\IP будет принимать файлы, отвечать на сообщения
Или Если хочешь автоматизации запускай регламентное задание и проверяй наличие файлов.
Источник
Сценарии объектной модели документа DOM XML средствами OLE-Automation
MS XML Parser как OLE-сервер
Библиотека MS XML Parser предоставляет возможность работы с XML-документами в скриптах, использующих объектную модель DOM XML. Такая работа возможна практически в любых средах, способных выступить в роли OLE-клиента. В данной статье примеры скриптов будут приводиться на языке VBScript для административных скриптов Windows. Вы можете копировать содержимое подобных примеров в текстовые файлы с расширением .vbs и запускать эти файлы на исполнение двойным щелчком мыши или из командной строки с помощью интерпретатора cscript.exe.
Объект DOMDocument создаётся следующим образом:
Set xmlParser = CreateObject(«Msxml2.DOMDocument»)
После этого вы можете вызывать и использовать методы и свойства этого объекта для чтения и записи XML-документов. Примечание: методы объектов XMLDOMDocument и XMLDOMElement во многом сходны, поэтому рассматриваются в данной статье совместно. Описание свойств, методов и событий в данной статье не является полностью исчерпывающим. Полное описание объектной модели MS XML Parser вы можете получить в MSDN, воспользовавшись, например, поиском по словосочетанию «IXMLDOMDocument/DOMDocument Members» или «IXMLDOMElement Members».
Пример XML-документа
В примерах кода, приведённых ниже, используется следующий «образцовый» XML-документ, представляющий из себя некий абстрактный упрощённый каталог товаров:
Вот XSL-таблица стилей для вышеприведённого документа, которая также является обычным XML-документом:
Загрузка XML-документа, отслеживание ошибок
Перечень свойств, методов и событий:
Описание | |
---|---|
async | Булево. Чтение и запись. Истина, если разрешена асинхронная загрузка документа. По умолчанию — истина. Если свойство установлено в True, метод load вернёт управление раньше, чем загрузка будет завершена. В этом случае вы можете использовать свойство readyState для проверки состояния загрузки, обрабатывая событие onreadystatechange. |
parsed | Булево. Только для чтения. Определяет состояние разборки узла и его дочерних узлов. В процессе асинхронного доступа в какой-то конкретный момент может оказаться доступным не все дерево документа. Перед выполнением некоторых операций, типа преобразований XSLT, полезно знать, доступно ли все дерево ниже этого узла для обработки. |
parseError | Только для чтения. Возвращает ссылку на объект XMLDOMParseError, при помощи которого можно получить подробную информацию о последней ошибке анализатора. |
readyState | Только для чтения. Возвращает целое число, характеризующее текущее состояние анализатора:
|
resolveExternals | Булево. Чтение и запись. По умолчанию — истина. Определяет, должны ли быть разрешены во время разбора внешние определения — пространства имён, внешние подмножества DTD и ссылки на внешние примитивы, независимо от проверки на валидность. Если задано True, внешние определения разрешаются во время разбора. Это позволяет определить атрибуты по умолчанию и типы данных и использовать внешнее подмножество DTD. Эта установка независима от того, должна ли быть выполнена проверка на валидность (что задаётся значением свойства validateOnParse). Если внешнее определение не может быть разрешено в процессе разбора, происходит ошибка. |
validateOnParse | Булево. Чтение и запись. По умолчанию — истина. Определяет, должен ли парсер проверить документ на валидность. Если установлено False, осуществляется только проверка на корректно сформированный (well-formed) документ. |
abort() | Прерывание процесса асинхронной загрузки и обработки документа. Объект XMLDOMParseError будет содержать информацию об ошибке. Если загрузка уже завершена (свойство readyState равно 4), никакие действия не предпринимаются. |
load(xmlSource) | Загружает документ, URL которого задан параметром xmlSource. В случае успеха возвращает True. Вызов этого метода обнуляет содержимое текущего документа. Если указанный URL не доступен или не ссылается на документ XML, этот метод возвращает ошибку и устанавливает свойство documentElement в null. Вы можете использовать этот метод, чтобы проверить, правильно ли построен (well-formed) документ XML. Вы не можете использовать этот метод, чтобы проверить документ на валидность. |
loadXML(strXML) | Загружает XML-фрагмент из передаваемой строки. Вы можете использовать этот метод, чтобы проверить, правильно ли построен (well-formed) документ XML. Вы не можете использовать этот метод, чтобы проверить документ на валидность. |
ondataavailable | Событие вызывается, когда обработчик обрабатывает очередную порцию данных документа. В обработчике этого события можно проверять текущий статус асинхронной загрузки (значение свойства readyState). |
onreadystatechange | Событие вызывается каждый раз, когда изменяется состояние обработчика — значение свойства readyState. |
Свойства объекта XMLDOMParseError (все свойства доступны только для чтения):
Описание | |
---|---|
errorCode | Содержит код возникшей ошибки или нуль, если ошибки не случилось. |
filepos | Содержит смещение относительно начала файла, в котором обнаружена ошибка. |
line | Содержит номер строки, в которой обнаружена ошибка. |
linepos | Содержит позицию ошибки в строке, в которой обнаружена ошибка. |
reason | Содержит описание ошибки. |
srcText | Содержит полный текст строки, в которой обнаружена ошибка. |
url | Содержит URL обрабатываемого документа. |
Пример скрипта, осуществляющего загрузку XML-документа с проверкой на ошибки:
Пример асинхронной загрузки XML-документа:
Обход дерева элементов
Перечень свойств и методов:
Описание | |
---|---|
documentElement | Содержит узел, представляющий корневой элемент документа (объект XMLDOMElement). Чтение и запись. Возможно присвоение ссылки на другой объект созданного ранее документа. |
childNodes | Содержит коллекцию (объект XMLDOMNodeList) всех дочерних узлов-неатрибутов данного узла. Только чтение. |
firstChild | Содержит первый дочерний узел данного узла, не являющийся атрибутом. Только чтение. |
lastChild | Содержит последний дочерний узел данного узла, не являющийся атрибутом. Только чтение. |
nextSibling | Содержит следующий узел (любого типа) на том же уровне данного узла. Только чтение. |
previousSibling | Содержит предыдущий узел (любого типа) на том же уровне данного узла. Только чтение. |
parentNode | Содержит узел, для которого данный узел является дочерним (не действует для атрибутов). Только чтение. |
ownerDocument | Содержит корневой узел документа, содержащего данный узел. Только чтение. |
text | Содержит всё текстовое содержимое данного узла, включая подчинённые узлы. Чтение и запись. |
xml | Содержит всё xml-содержимое данного узла, включая подчинённые узлы. Только чтение. |
nodeValue | Содержит значение данного узла. Если компонент XML непосредственно не имеет значения, содержит null. Чтение и запись. |
getElementsByTagName(typename) | Возвращает коллекцию XMLDOMNodeList всех элементов заданного типа. Если указано «*», возвращает все элементы. |
attributes | Содержит коллекцию XMLDOMNamedNodeMap всех дочерних узлов-атрибутов данного узла. Только чтение. |
getAttribute(name) | Возвращает значение атрибута с заданным именем. |
getAttributeNode(name) | Возвращает узел атрибута с заданным именем. |
Описание | |
---|---|
length | Количество элементов (узлов) в коллекции. |
item(index) | Возвращает узел по заданному индексу. Отсчёт начинается с нуля. Данный метод является методом по умолчанию. |
reset() | Устанавливает внутренний указатель на позицию перед первым узлом в наборе, чтобы следующий вызов nextNode() возвращал первый узел. |
nextNode() | Возвращает следующий узел в наборе, в соответствии с позицией внутреннего указателя. |
Описание | |
---|---|
getNamedItem(strName) | Возвращает узел, соответствующий атрибуту с заданным именем. |
setNamedItem(newItem) | Добавляет переданный узел-атрибут в коллекцию (если атрибут с таким именем уже есть, замещает). |
Описание | |
---|---|
nodeName | Содержит полное имя данного узла, включая префикс пространства имён. Только чтение. |
baseName | Содержит имя данного узла без префикса пространства имён. Только чтение. |
prefix | Содержит префикс (пространства имён) имени данного узла. Только чтение. |
nodeType | Содержит тип текущего узла (число). Только чтение. Возможные значения:
|
nodeTypeString | Содержит тип текущего узла (строка строчными буквами). Только чтение. |
dataType | Содержит тип данных узла-атрибута, если этот тип данных определён в DTD. Чтение и запись. |
namespaceURI | Содержит URI пространства имён текущего узла. Только чтение. |
definition | Для узла типа «entityreference» содержит узел типа «entity» (т.е. его DTD-определение). Только чтение. |
Рекурсивный обход всего дерева элементов с выводом информации о текущем узле. Этот скрипт будет работать для любого XML-документа, в т.ч. для XSL-таблицы стилей, приведённой выше непосредственно после нашего «каталога товаров»:
Поиск и отбор узлов
Описание | |
---|---|
selectNodes(patternString) | Возвращает коллекцию XMLDOMNodeList, содержащую поддерево, выбранное по шаблону поиска patternString. |
selectSingleNode(patternString) | Аналогичен методу selectNodes, но возвращает только первый узел из выбранного поддерева. |
В качестве параметра вышеуказанные методы принимают строку XSL-запроса (образец поиска — XSL pattern). Язык XSL-запросов напоминает способ определения пути в файловой системе — это список узлов, разделённых символом «/». Для указания на текущий элемент используется символ «.», на родительский — «..», для указания на все дочерние элементы — символ «*», для указания на элемент, расположенный ниже по дереву (не важно, на каком уровне вложенности) — символы «//». Условия в запросе заключаются в квадратные скобки «[» и «]». Имена атрибутов в запросе должны предваряться символом «@».
Вот примеры простейших запросов к образцовому XML-документу, расположенному в начале статьи:
- «/PRODUCTS» — корневой элемент.
- «//PRODUCT» или «/PRODUCTS/PRODUCT» — все элементы PRODUCT.
- «//PRODUCT[@import]» — все элементы PRODUCT, в которых определён атрибут import.
- «//PRODUCT[@import=’yes’]» — все элементы PRODUCT, у которых атрибут import равен «yes».
- «//PRODUCT[SORT]» — все элементы PRODUCT, которые содержат хотя бы один элемент SORT.
- «//SORT[COLOR or PRICE]» — все элементы SORT, которые содержат элементы COLOR или PRICE.
Выберем из образцового XML-документа и отобразим наименования отечественных товаров, у которых есть сорт серого цвета, а также всех импортных товаров:
Вот запрос, составленный по-другому, но возвращающий те же результаты:
Ещё один способ выборки, с использованием метода selectSingleNode:
Создание, модификация и запись XML-документов
Описание | |
---|---|
save(objTarget) | Сохраняет документ в файле (если указан URL) или замещает содержимое другого документа (если указан объект XMLDOMDocument). |
createElement(tagName) | Создаёт и возвращает элемент с указанным именем. |
createAttribute(name) | Создаёт и возвращает новый атрибут с указанным именем. |
createCDATASection(strData) | Создаёт и возвращает новый узел CDATA, содержащий переданное значение. |
createProcessingInstruction(strTarget, strData) | Создаёт и возвращает новый узел инструкции по обработке. |
createComment(strComment) | Создаёт и возвращает новый узел комментария. |
createEntityReference(strName) | Создаёт и возвращает новый узел ссылки на примитив. |
createTextNode(strText) | Создаёт и возвращает новый текстовый узел. |
createNode(numType, strName, strNamespaceURI) | Универсальный метод — создаёт и возвращает новый узел указанного типа и названия. Позволяет использовать пространства имён. |
createDocumentFragment() | Создаёт и возвращает новый пустой фрагмент XML-документа, который в дальнейшем можно «наполнить» узлами и присоединить к XML-документу. |
cloneNode(boolDeep) | Создаёт и возвращает копию текущего узла. Параметр boolDeep определяет, нужно ли рекурсивно копировать дочерние элементы. |
setAttribute(name, value) | Устанавливает значение указанного атрибута текущего узла. При необходимости создаёт атрибут. |
setAttributeNode(AttributeNode) | Устанавливает или обновляет переданный атрибут у текущего элемента. |
removeAttribute(name) | Удаляет указанный атрибут. Если указанный атрибут имеет значение по умолчанию, вместо удаления происходит замещение: атрибуту просто устанавливается значение по умолчанию. |
removeAttributeNode(nodeAttribute) | Удаляет переданный объект узла-атрибута. Если этот атрибут имеет значение по умолчанию, вместо удаления происходит замещение: атрибуту просто устанавливается значение по умолчанию. |
appendChild(newChildNode) | Добавляет текущему узлу новый дочерний элемент и возвращает ссылку на этот элемент. То же самое можно сделать вызовом insertBefore(newChildNode, null). |
insertBefore(newChildNode, refChildNode) | Вставляет новый дочерний узел (newChildNode) перед указанным существующим дочерним узлом (refChildNode). Если последний параметр не задан, новый дочерний узел будет добавлен в конец. |
replaceChild(newChildNode, oldChildNode) | Заменяет указанный дочерний объект текущего элемента на новый и возвращает старый дочерний объект. Если новый дочерний объект — null, старый дочерний объект будет просто удалён. |
removeChild(childNode) | Удаляет указанный дочерний объект текущего элемента и возвращает его. |
Все методы, которые создают новые объекты (createElement, createAttribute и подобные) не выполняют никакой работы, кроме непосредственно самого создания объектов. Для включения созданных объектов в документ надо дополнительно вызывать методы appendChild, insertBefore и подобные.
Пример создания нового XML-документа:
Добавим новый товар в начало нашего существующего «каталога товаров»:
Добавим новый товар в начало нашего существующего «каталога товаров» с помощью копирования:
Меняем местами, удаляем товары:
Обработка поддеревьев стилевыми таблицами
Описание | |
---|---|
transformNode(objStylesheet) | Назначает стилевую таблицу для текущего узла и возвращает строку — результат обработки. Текущим узлом может быть весь XML-документ. |
transformNodeToObject(objStylesheet, objXMLDOMDocument) | То же, что и transformNode, но результат не возвращается, а помещается в objXMLDOMDocument. |
Применяем существующую стилевую таблицу к каталогу товаров:
Вывод товаров в обратном порядке с помощью XSL-сортировки:
Прочие свойства и методы
Перечень свойств и методов:
Описание | |
---|---|
doctype | Содержит объект XMLDOMDocumentType (узел DTD XML-документа). Только чтение. Если DTD в документе отсутствует, свойство содержит null. Только чтение. |
url | Содержит URL документа. Только чтение. |
nodeFromID(idString) | Возвращает узел по значению его атрибута типа ID (т.е. осуществляет поиск узла по ID) или Nothing, если узел не найден. |
hasChildNodes() | Возвращает True, если текущий узел имеет дочерние узлы, и False в противном случае. |
specified | Возвращает True, если текущий узел атрибута явно определён в тексте документа, и False в противном случае (если атрибут опущен и имеет значение по умолчанию, взятое из DTD). |
normalize() | Нормализует все текстовые узлы элемента (на любой глубине), объединяя два или больше смежных текстовых узла в один текстовый узел. |
Примеры использования некоторых свойств и методов:
Источник