|  | DOM: Узел.ПолучитьАтрибут("m:type") возвращает НЕОПРЕДЕЛЕНО, хотя атрибут есть | ☑ | 
    
        | 0
    
        dave2000   22.04.15✎ 17:54 | 
        Вобщем, есть строка СтрокаXML такого вида (упростил для примера):
 
 <GetVehicle xmlns:fix="h_t_t_p://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="h_t_t_p://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
 <element m:type="ArgoAgricultureDatabaseModel.VehicleWayBills_Result">
 <PerfTskId1 m:type="Edm.Int32">123456</PerfTskId>
 <PerfTskId2 m:type="Edm.Decimal">123456</PerfTskId>
 <PerfTskId3 m:type="Edm.Boolean">123456</PerfTskId>
 <PerfTskId4 m:type="Edm.Int32">123456</PerfTskId>
 </element>
 </GetVehicle>
 
 
 А это код для разбора этой строки:
 
 ЧтениеXML = Новый ЧтениеXML;
 ЧтениеXML.УстановитьСтроку(СтрокаXML);
 ПостроительDOM = Новый ПостроительDOM;
 ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
 Разыменовыватель = Новый РазыменовательПространствИменDOM(ДокументDOM);
 Результат = ДокументDOM.ВычислитьВыражениеXPath("content/m:properties", ДокументDOM, Разыменовыватель);
 
 //Обработка полученного ответа
 УзелСтрока = Результат.ПолучитьСледующий();
 Пока УзелСтрока=Неопределено Цикл
 
 Для каждого узелПоля Из УзелСтрока.ДочерниеУзлы Цикл
 
 //так мы получаем значение Нопределено, т.е. по имени почему-то не находит
 ТипЗначенияСтр = узелПоля.ПолучитьАтрибут("m:type");
 
 // А вот так, перебором атрибудов, работает нормально
 ТипЗначенияСтр = Неопределено;
 Для каждого Атр Из узелПоля.Атрибуты Цикл
 Если Атр.Имя = "m:type" Тогда
 ТипЗначенияСтр = Атр.Значение;
 Прервать;
 КонецЕсли;
 КонецЦикла;
 
 // ...
 // ...
 // ...
 
 КонецЦикла;
 
 УзелСтрока = Результат.ПолучитьСледующий();
 КонецЦикла;
 
 
 
 Итак, вопрос:
 
 почему не работает строка узелПоля.ПолучитьАтрибут("m:type")? Почему она возвращает НЕОПРЕДЕЛЕНО?
 |  | 
    
        | 1
    
        dave2000   22.04.15✎ 17:58 | 
        Опечатка, для вычисления Path там эта строка:
 > Результат = ДокументDOM.ВычислитьВыражениеXPath("//element", ДокументDOM, Разыменовыватель);
 
 
 Вопрос актуален.
 |  | 
    
        | 2
    
        Гёдза   22.04.15✎ 18:30 | 
        а просто type?     |  | 
    
        | 3
    
        dave2000   22.04.15✎ 19:12 | 
        (2) узел.ПолучитьАтрибут("type") тоже возвращает НЕОПРЕДЕЛЕНО     |  | 
    
        | 4
    
        DrShad   22.04.15✎ 20:22 | 
        Ты код точно перепечатка? Ибо он нерабочий     |  | 
    
        | 5
    
        Записьдампа   22.04.15✎ 21:02 | 
        (0) Потому что ПолучитьАтрибут не умеет в квалифицированные имена. Он может или в локальные с пустым пространством - см. СП, первый вариант синтаксиса, или в раздельное указание пространства и имени - см. там же второй вариант.
 Используй УзелПоля.ПолучитьАтрибут(УзелПоля.НайтиURIПространстваИмен("m"), "type")
 |  | 
    
        | 6
    
        dave2000   23.04.15✎ 12:02 | 
        (5) Супер! Работает!)
 Всем спасибо!
 |  | 
    
        | 7
    
        dave2000   23.04.15✎ 12:03 | 
        Подозревал, что проблема скорее всего связана с пространством имен, не мог понять как именно     |  |