Проблема с XML-анализом XDocument

Я использую XDocument и LINQ для анализа некоторых файлов XML, и некоторые из них работали нормально, а другие - нет. Посмотрев на это, я обнаружил разницу:

Работающие файлы выглядят так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Scenarios xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Scenario>
        ...
    </Scenario>
</Scenarios>

Файлы, которые не выглядят так:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Scenarios xmlns="http://www.w3.org/2001/XMLSchema-instance">
    <Scenario>
        ...
    </Scenario>
</Scenarios>

Если вы этого не видите, отсутствующим элементом является псевдоним:xsi в корневом элементе.

Я просто хочу знать, почему это так. Файлы, которые в остальном одинаковы, не будут анализироваться XDocument.Load(), если у них нет этого псевдонима.

Заранее спасибо!

1 ответ

Решение

В первом примере вы говорите, что любой узел (элемент или атрибут) с xsi Префикс из пространства имен схемы XML.

Во втором примере вы говорите, что любой узел без префикса находится в пространстве имен схемы XML.

Вам также нужно сделать объявление как первое, если у вас есть узлы с xsi префикс или удалить эти узлы.

РЕДАКТИРОВАТЬ: Как правильно заметил svick, XDocument не выполняет проверку схемы по умолчанию, поэтому более вероятно, что проблема ... содержит несколько узлов с xsi префикс

Другие вопросы по тегам