Парсер Xerces SAX игнорирует атрибут xmlxs: xsi как атрибут элемента - PullRequest
1 голос
/ 04 февраля 2011

Используя парсер Xerces SAX, я пытаюсь получить все элементы и их атрибуты из этого XML-файла:

-------------- Начать анализ XML-файла ---------------->

<?xml version="1.0" encoding="UTF-8"?> <invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="my.xsd"> <parties> (...)

-------------- Конец файла XML для разбора ---------------->

При получении атрибутов для элемента 'invoice' Xerces ++ не добавляет атрибут 'xmlns: xsi' в список 'Attributes' для элемента 'invoice'. Однако атрибут «xsi: noNamespaceSchemaLocation» вставляется в список.

Почему? Есть ли конкретная причина с точки зрения стандарта XML? Есть ли способ настроить синтаксический анализатор Xerces ++ SAX, чтобы он также вставлял этот атрибут? (Документация по настройке свойств парсера не рассказывает как).

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 04 февраля 2011

SAX обрабатывает объявления пространства имен иначе, чем атрибуты.Атрибуты уведомляются в событии startElement (), пространства имен уведомляются (если требуется) в событии startPrefixMapping ().

...