Есть ли какая — либо разница между этими двумя фрагментами XML-массива?

#xml

Вопрос:

Владелец API отправляет мне этот пример XML для использования.

 <a:Images xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <b:string>https://www.siteniz.com/variant_image.png</b:string>
    <b:string>https://www.siteniz.com/variant_image2.png</b:string>
    <b:string>https://www.siteniz.com/variant_image3.png</b:string>
</a:Images>
 

Но библиотека, которую я использую, генерирует XML, подобный этому.

 <ns1:Images>
    <ns4:string xmlns:ns4="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        https://www.example.com/variant_image.png
    </ns4:string>
    <ns5:string xmlns:ns5="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        https://www.example.com/variant_image2.png
    </ns5:string>
    <ns6:string xmlns:ns6="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        https://www.example.com/variant_image3.png
    </ns6:string>
</ns1:Images>
 

Я игнорирую префиксы пространства имен, но мне интересно, какое объявление элемента является правильным. Или это то же самое для серверной стороны?

Комментарии:

1. Ни один из этих фрагментов XML не является семантически допустимым. Оба используют необъявленные префиксы пространства имен, поэтому невозможно сказать, представляют ли они одну и ту же структуру.

2. Кроме того, значения элементов из первого фрагмента (например "https://www.example.com/variant_image.png" ) не имеют разрывов строк или отступов, как значения во втором фрагменте. Так что ценности определенно не совпадают.

3. Но вообще говоря: элемент, для которого объявлено пространство имен, не имеет значения. Является ли это пространством имен по умолчанию или префиксом, не имеет значения. Сколько раз объявляется пространство имен, не имеет значения. Префикс, используемый при каждом объявлении, не имеет значения. Единственное, что когда- либо имеет значение, — это то, какой URI пространства имен связан с каким элементом.

4. Нет, вы не выразились неправильно. Но я понятия не имею, что a: относится к первому документу и что ns1: относится ко второму документу, потому что в ваших фрагментах не отображаются их объявления. Может быть один и тот же URI, может быть разные URI. Если это один и тот же URI и вы обрезаете текстовые значения во втором фрагменте, то оба фрагмента XML представляют один и тот же документ.

5. «Тогда я предполагаю, что позиции объявлений ns во втором фрагменте не ошибочны» — Правильно. Как я уже сказал, единственное, что когда-либо имеет значение, — это то, какой URI пространства имен связан с каким элементом. Как это было связано, совершенно не имеет значения.