if(XMLDOMNode_Get_NodeName(hSpNode) = 'spec')
{
hSubNodes := XMLDOMNode_Get_ChildNodes(hSpNode);
for (j := 0; j < XMLDOMNodeList_Get_Length(hSubNodes); j := j + 1)
{
hSpSubNodes := XMLDOMNodeList_Get_Item(hSubNodes, j);
_str := XMLDOMNode_Get_NodeName(hSpSubNodes);
--- вот тут я получаю sp_spec, но как мне блин получить значение 2005-01-01
}
}
Я пользуюсь функцией GetNameAttr(NodeRes: LongInt; NameAtr: String): String;
где NodeRes - handle Node узла -
NameAtr - наименование атрибута - в вашем случае 'sp_spec'
Function GetNameAttr(NodeRes: LongInt; NameAtr: String): String;
{
var i : LongInt;
var MapNodeList: LongInt;
var Len : LongInt;
var Node : LongInt;
GetNameAttr := '';
MapNodeList := XMLDOMNode_get_Attributes(NodeRes);
Len := XMLDOMNamedNodeMap_get_Length(MapNodeList);
// цикл по всем атрибутам для NodeRes
for (i := 0; i < Len; Inc(i))
{
Node := XMLDOMNamedNodeMap_get_Item(MapNodeList, i);
if (XMLDOMNode_get_NodeName(Node) = NameAtr)
{
GetNameAttr := XMLDOMAttribute_get_NodeValue(Node);
ReleaseDump(Node);
break;
}
ReleaseDump(Node);
}
ReleaseDump(MapNodeList);
}
я знаю как разбирать аттрибуты )) xml не зрая привел
Dmitry_Sol писал(а):Занялся вашим xml файлом
Выяснилось, что он не правильной структуры. В нем нет, ни одного элемента. Привел его к правильной структуре.
мне нужны не значения атрибутов а значения полей т.е. получить значение атрибута "dat" -"2005-01-01" - не пролема, а вот получить значение "мука" и "молоко" ..О_о
Написал в ПИР .. может ответят чего ...
К сожалению у Галактики достаточно куцый функционал работы с XML.
Но ваша проблема меня не отпускала. Поэтому пришлось вспомнить навыки работы с парсером XML
https://code.google.com/p/js-library-g ... erXML.ZIP
Надеюсь поможет.
Dmitry_Sol писал(а):К сожалению у Галактики достаточно куцый функционал работы с XML.
Но ваша проблема меня не отпускала. Поэтому пришлось вспомнить навыки работы с парсером XML
https://code.google.com/p/js-library-g ... erXML.ZIP
Надеюсь поможет.
что то вы нерельно круты )) попробую осознать этот дзэн О_о
итак в память потомкам... общение с ТП привело к некоторым результатам:
1) "Мука" это тот же ChildNodes
2)следовательно для sp_spec тоже получаем XMLDOMNode_Get_ChildNodes
3)получаем потомка - он будет один ... XMLDOMNodeList_get_Item(Item, 0)
4)значение "Мука" получаем XMLDOMCDataSection_get_NodeValue
вот О_о
Dmitry_Sol писал(а):К сожалению у Галактики достаточно куцый функционал работы с XML.
Но ваша проблема меня не отпускала. Поэтому пришлось вспомнить навыки работы с парсером XML
https://code.google.com/p/js-library-g ... erXML.ZIP
Надеюсь поможет.
Народ, а подскажите, где функции по разбору xml в Галактике искать? Что подключается и где инфа? В стандартной документации vip чего-то не наблюдаю
1. Была где то ссылка на пример разбора с помощью штатного парсера - ищите "ParserXML.ZIP". Доку по нему соотв. в интернете на MSXML.
2. В vipprogr.chm присутствуют только штатные функции - которые на уровне системы.
3. Вот описание тех , что содержаться в G_EXPIMP.Dll, Есть кстати готовый объект на этих функциях, который грузит с их помощью во временные таблицы - Frm\..\L\L_Common\vip\XML\XMLConverter.vih , но вот описание таблиц разработчик не выкладывает.
{------------------------------------------------------------------------------}
// Инициализация и возврат указателя на DOMDocument
Function XMLDOMDoc_New
: longint; // адрес указателя на XML-DOMDocument
{------------------------------------------------------------------------------}
// Загрузка DOMDocument из файла
Function XMLDOMDoc_Load(
ahSource: longint; // адрес указателя на DOMDocument
asSourceName: string // имя файла, может быть URL
): boolean; // True - если успешно
{------------------------------------------------------------------------------}
// Запись DOMDocument в файл
Function XMLDOMDoc_Save(
ahSource: longint; // адрес указателя на DOMDocument
asFileName: string // имя файла
): boolean; // True - если успешно
{------------------------------------------------------------------------------}
// Получение корневого элемента
Function XMLDOMDoc_DocumentElement(
ahSource: longint // адрес указателя на DOMDocument
): longint; // адрес указателя на XMLDOMElement
{------------------------------------------------------------------------------}
// Создание узла "Node"
Function XMLDOMDoc_CreateNode(
ahSource: longint; // адрес указателя на DOMDocument
aiType: integer; // тип узла
asName: string // наименование узла
): longint; // адрес указателя на XMLDOMNode
{------------------------------------------------------------------------------}
// Создание узла "Attribute"
Function XMLDOMDoc_CreateAttribute(
ahSource: longint; // адрес указателя на DOMDocument
asName: string // наименование атрибута
): longint; // адрес указателя на XMLDOMAttribute
{------------------------------------------------------------------------------}
// Создание узла "CDataSection"
Function XMLDOMDoc_CreateCDataSection(
ahSource: longint; // адрес указателя на DOMDocument
asData: string // данные
): longint; // адрес указателя на XMLDOMCDataSection
{------------------------------------------------------------------------------}
// Создание узла "Comment"
Function XMLDOMDoc_CreateComment(
ahSource: longint; // адрес указателя на DOMDocument
asData: string // текст комментария
): longint; // адрес указателя на XMLDOMComment
{------------------------------------------------------------------------------}
// Создание узла "DocumentFragment"
Function XMLDOMDoc_CreateDocumentFragment(
ahSource: longint // адрес указателя на DOMDocument
): longint; // адрес указателя на XMLDOMDocumentFragment
{------------------------------------------------------------------------------}
// Создание узла "Element"
Function XMLDOMDoc_CreateElement(
ahSource: longint; // адрес указателя на DOMDocument
asName: string // наименование элемента
): longint; // адрес указателя на XMLDOMElement
{------------------------------------------------------------------------------}
// Создание узла "EntityReference"
Function XMLDOMDoc_CreateEntityReference(
ahSource: longint; // адрес указателя на DOMDocument
asName: string // наименование ссылки
): longint; // адрес указателя на XMLDOMEntityReference
{------------------------------------------------------------------------------}
// Создание узла "ProcessingInstruction"
Function XMLDOMDoc_CreateProcessingInstruction(
ahSource: longint; // адрес указателя на DOMDocument
asName: string; // наименование инструкции
asData: string // текст инструкции
): longint; // адрес указателя на XMLDOMProcessingInstruction
{------------------------------------------------------------------------------}
// Создание узла "TextNode"
Function XMLDOMDoc_CreateTextNode(
ahSource: longint; // адрес указателя на DOMDocument
asData: string // текст
): longint; // адрес указателя на XMLDOMTextNode
{------------------------------------------------------------------------------}
// Чтение NodeValue для узла "Attribute"
Function XMLDOMAttribute_get_NodeValue(
ahSource: longint // адрес указателя на XMLDOMAttribute
): string; // значение атрибута
{------------------------------------------------------------------------------}
// Запись NodeValue для узла "Attribute"
Function XMLDOMAttribute_set_NodeValue(
ahSource: longint; // адрес указателя на XMLDOMAttribute
asValue: string // значение атрибута
): boolean; // True, если успешно
{------------------------------------------------------------------------------}
// Добавление строки в данные для узла "CDataSection"
Function XMLDOMCDataSection_AppendData(
ahSource: longint; // адрес указателя на XMLDOMCDataSection
asData: string // добавляемая строка
): boolean; // True, если успешно
{------------------------------------------------------------------------------}
// Чтение Length для узла "CDataSection"
Function XMLDOMCDataSection_get_Length(
ahSource: longint // адрес указателя на XMLDOMCDataSection
): longint; // значение
{------------------------------------------------------------------------------}
// Чтение NodeValue для узла "CDataSection"
Function XMLDOMCDataSection_get_NodeValue(
ahSource: longint // адрес указателя на XMLDOMCDataSection
): string; // значение
{------------------------------------------------------------------------------}
// Запись NodeValue для узла "CDataSection"
Function XMLDOMCDataSection_set_NodeValue(
ahSource: longint; // адрес указателя на XMLDOMCDataSection
asValue: string // значение
): boolean; // True, если успешно
{------------------------------------------------------------------------------}
// Чтение подстроки из Data для узла "CDataSection"
Function XMLDOMCDataSection_SubstringData(
ahSource: longint; // адрес указателя на XMLDOMCDataSection
aliOffset: longint; // смещение
aliCount: longint // кол-во символов
): string; // значение
{------------------------------------------------------------------------------}
// Добавление атрибута к элементу
Function XMLDOMElement_SetAttribute(
ahElement: longint; // адрес указателя на XMLDOMElement
asAttrName: string; // наименование атрибута
asAttrValue: string // значение атрибута
): boolean; // True, если успешно
{------------------------------------------------------------------------------}
// Подвязка узла к узлу-родителю
Function XMLDOMNode_AppendChild(
ahSourceParent: longint; // адрес указателя на узел-родитель
ahSourceChild: longint // адрес указателя на подвязываемый узел
): longint; // адрес указателя на XMLDOMNamedNodeMap
{------------------------------------------------------------------------------}
// Чтение Attributes для узла "Node"
Function XMLDOMNode_get_Attributes(
ahSource: longint // адрес указателя на XMLDOMNode
): longint; // адрес указателя на XMLDOMNodeList
{------------------------------------------------------------------------------}
// Чтение ChildNodes для узла "Node"
Function XMLDOMNode_get_ChildNodes(
ahSource: longint // адрес указателя на XMLDOMNode
): longint; // адрес указателя на XMLDOMNodeList
{------------------------------------------------------------------------------}
// Чтение NodeType для узла "Node"
Function XMLDOMNode_get_NodeType(
ahSource: longint // адрес указателя на XMLDOMNode
): integer; // значение
{------------------------------------------------------------------------------}
// Чтение NodeName для узла "Node"
Function XMLDOMNode_get_NodeName(
ahSource: longint // адрес указателя на XMLDOMNode
): string; // значение
{------------------------------------------------------------------------------}
// Освобождение ссылки на XMLDOMNode
Function XMLDOMNode_Release(
ahSource: longint // адрес указателя на узел
): boolean; // True, если успешно
{------------------------------------------------------------------------------}
// Чтение Length для узла "NamedNodeMap"
Function XMLDOMNamedNodeMap_get_Length(
ahSource: longint // адрес указателя на XMLDOMNamedNodeMap
): longint; // значение
{------------------------------------------------------------------------------}
// Чтение Item для узла "NamedNodeMap"
Function XMLDOMNamedNodeMap_get_Item(
ahSource: longint; // адрес указателя на XMLDOMNamedNodeMap
aliIndex: longint // индекс
): longint; // адрес указателя на XMLDOMAttribute (Item[index])
{------------------------------------------------------------------------------}
// Чтение Length для узла "NodeList"
Function XMLDOMNodeList_get_Length(
ahSource: longint // адрес указателя на XMLDOMNodeList
): longint; // значение
{------------------------------------------------------------------------------}
// Чтение Item для узла "NodeList"
Function XMLDOMNodeList_get_Item(
ahSource: longint; // адрес указателя на XMLDOMNodeList
aliIndex: longint // индекс
): longint; // адрес указателя на XMLDOMNode (Item[index])
{------------------------------------------------------------------------------}
// Чтение списка элементов по TagName
Function XMLDOMDoc_GetElementsByTagName(
ahSource: longint; // адрес указателя на DOMDocument
asTagName: string // имя тэга
): longint; // адрес указателя на XMLDOMNodeList
{------------------------------------------------------------------------------}
// Освобождение ссылки на DOMDocument
Function XMLDOMDoc_Done(
ahSource : longint // адрес указателя на DOMDocument
): boolean; // True, если успешно