Чтение XML с помощью xerces: получение типа где - PullRequest
0 голосов
/ 13 марта 2012

Я использую xerces-c-3.1.1 для чтения XML-файлов в программу на C ++.

Я нашел узел aNode типа

DOMNode*       aNode;

и может получить имя узла, используя

name=aNode->getNodeName();

Однако, когда я пытаюсь использовать

type=aNode->getNodeType();

чтобы получить тип, возвращаемый тип является целым числом: ELEMENT_NODE.

Буду очень признателен, если кто-нибудь скажет мне, как написать код, позволяющий мне определить, имеет ли узел имя «имя-узла» и тип «имя-типа». Я знаю, как сделать первую часть, используя

if(wcscmp(name, L"nodeName")==0)

но не знаю, как выполнить последнюю часть.

Ответы [ 3 ]

0 голосов
/ 13 марта 2012

Полагаю, вам нужен тип из схемы экземпляра XML.Было бы легче получить информацию о типе при разборе файла с использованием Xerces, чем после того, как XML уже проанализирован и доступен в виде дерева DOM.Если это вариант для вас, посмотрите здесь: get-schema-data-types-from-xerces Ответ по ссылке описывает, как получить доступ к типам схем при разборе файла с помощью XercesSAX-парсер.

Если это не вариант, вам нужно сохранить (DOM) -парсер, который вы использовали для загрузки XML, а также получить доступ к грамматике, сгенерированной из схемы при проверке файла... В конце гораздо больше усилий.

Редактировать: Хорошо, посмотрев на заголовок вопроса, я запутался, если вы просто хотите получить атрибут типа или тип схемы ... Однако, если вы хотите получить доступ к атрибутам, просто используйте getAttributes , а затем getNamedItem , чтобы получить искомый атрибут.

0 голосов
/ 07 октября 2014

Вам нужно перевести имя из XMLStr в char *

char* temp2 = XMLString::transcode(aNode->getNodeName());
std::cout << "The current node name is " << temp2 << std::endl;
0 голосов
/ 13 марта 2012

DOMNode::getNodeType не является сокращением для «получить атрибут с именем type и вернуть его в виде строки».Он делает именно то, что говорит: получает тип DOM узла DOM.Узлы DOM - это типизированные объекты: элементы, текст, атрибуты, инструкции по обработке, комментарии, CDATA и т. Д.

Тип DOM узла DOM не имеет ничего , связанного с тем, что происходитхранится в атрибуте type узла элемента.Это для вас, используя обычный синтаксис доступа к атрибутам.

...