Чтение XML, как разобрать строку?

1. mukilka 26.01.17 11:16 Сейчас в теме
Добрый день. Клиент прислал файл xml. В нем строки такого типа:
<БазоваяЕдиница МеждународноеСокращение="PCE" НаименованиеПолное="Штука" Код="796">шт</БазоваяЕдиница>

МеждународноеСокращение, НаименованиеПолное и Код я получаю. Как достучатся до значение "шт"? Спасибо за совет)
По теме из базы знаний
Найденные решения
7. monkbest 115 27.01.17 08:49 Сейчас в теме
Зачем Вам схемы и фабрики? Просто чтениеXML не поможет для такой простой задачки?
У него для атрибутов и значений узла разные методы:
МойХМЛ.ПолучитьАтрибут(<НомерАтрибута>)  по номеру
МойХМЛ.ПолучитьАтрибут(<ИмяАтрибута>)  по имени
МойХМЛ.Значение - значение текущего узла



ПолучитьАтрибут() - метод
Значение - свойство
request4t; Ko__ma; mukilka; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kasper076 105 26.01.17 11:27 Сейчас в теме
БазоваяЕдиница это элемент.
МеждународноеСокращение, НаименованиеПолное и Код это атрибуты.
шт это значение элемента.
monkbest; mukilka; +2 Ответить
4. mukilka 26.01.17 11:31 Сейчас в теме
(2)
(3)
Пробовал так:
Фабрика = Новый ФабрикаXDTO();	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
	ОбъектXDTO =  Фабрика.ПрочитатьXML(ЧтениеXML);

Видит как ОбъектXDTO с атрибутами, значение "шт" нет!
6. kasper076 105 27.01.17 08:08 Сейчас в теме
(4)
Схема:
<xs:schema xmlns:tns="http://www.sample-package.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.sample-package.org" attributeFormDefault="unqualified" elementFormDefault="qualified">
	<xs:complexType name="БазоваяЕдиница">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="МеждународноеСокращение" use="required"/>
				<xs:attribute name="НаименованиеПолное" use="required"/>
				<xs:attribute name="Код" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="Файл">
		<xs:sequence>
			<xs:element name="БазовыеЕдиницы" type="tns:БазоваяЕдиница" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
Показать

Код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
	ИмяФайла = ПолучитьИмяВременногоФайла("xsd");
	Макет = ПолучитьМакет("Макет");
	Макет.Записать(ИмяФайла);
	
	Фабрика = СоздатьФабрикуXDTO(ИмяФайла);
	
	УдалитьФайлы(ИмяФайла);
	
    Файл = Фабрика.Создать(Фабрика.Тип("http://www.sample-package.org", "Файл"));
	
	БазоваяЕдиница = Фабрика.Создать(Фабрика.Тип("http://www.sample-package.org", "БазоваяЕдиница"));
	БазоваяЕдиница.МеждународноеСокращение = "PCE";
	БазоваяЕдиница.НаименованиеПолное = "штука";
	БазоваяЕдиница.Код = 796;
	БазоваяЕдиница.__content = "шт";
	
	Файл.БазовыеЕдиницы.Добавить(БазоваяЕдиница);
	
	БазоваяЕдиница = Фабрика.Создать(Фабрика.Тип("http://www.sample-package.org", "БазоваяЕдиница"));
	БазоваяЕдиница.МеждународноеСокращение = "PCE";
	БазоваяЕдиница.НаименованиеПолное = "штука";
	БазоваяЕдиница.Код = 796;
	БазоваяЕдиница.__content = "шт";
	
	Файл.БазовыеЕдиницы.Добавить(БазоваяЕдиница);
	
	БазоваяЕдиница = Фабрика.Создать(Фабрика.Тип("http://www.sample-package.org", "БазоваяЕдиница"));
	БазоваяЕдиница.МеждународноеСокращение = "PCE";
	БазоваяЕдиница.НаименованиеПолное = "штука";
	БазоваяЕдиница.Код = 796;
	БазоваяЕдиница.__content = "шт";
	
	Файл.БазовыеЕдиницы.Добавить(БазоваяЕдиница);
	
	ЗаписьХМЛ = Новый ЗаписьXML;
	ЗаписьХМЛ.ОткрытьФайл(ИмяФайла);
	Фабрика.ЗаписатьXML(ЗаписьХМЛ, Файл);
	ЗаписьХМЛ.Закрыть();
	
	ЧтениеХМЛ = Новый ЧтениеXML;
	ЧтениеХМЛ.ОткрытьФайл(ИмяФайла);
	
	Файл = Фабрика.ПрочитатьXML(ЧтениеХМЛ, Фабрика.Тип("http://www.sample-package.org","Файл"));
	ЧтениеХМЛ.Закрыть();
	Для Каждого ТекБазЕд Из Файл.БазовыеЕдиницы Цикл
		Сообщить("МеждународноеСокращение: " + ТекБазЕд.МеждународноеСокращение + ", НаименованиеПолное: " +  ТекБазЕд.НаименованиеПолное + ", Код: " + ТекБазЕд.Код + ", Значение: " + ТекБазЕд.__content);
	КонецЦикла;	
КонецПроцедуры
Показать
Прикрепленные файлы:
Прочитать ХМЛ с атрибутами.epf
3. oldfornit 26.01.17 11:27 Сейчас в теме
5. SyachinS 26.01.17 13:28 Сейчас в теме
"шт" в данном случае это значение узла, а не атрибут, что бы прочитать значение узла надо.
7. monkbest 115 27.01.17 08:49 Сейчас в теме
Зачем Вам схемы и фабрики? Просто чтениеXML не поможет для такой простой задачки?
У него для атрибутов и значений узла разные методы:
МойХМЛ.ПолучитьАтрибут(<НомерАтрибута>)  по номеру
МойХМЛ.ПолучитьАтрибут(<ИмяАтрибута>)  по имени
МойХМЛ.Значение - значение текущего узла



ПолучитьАтрибут() - метод
Значение - свойство
request4t; Ko__ma; mukilka; +3 Ответить
8. mukilka 27.01.17 11:13 Сейчас в теме
(7) Спасибо, уже дошел к этому решению
9. Ko__ma 16.03.20 09:07 Сейчас в теме
(7)
МойХМЛ.ПолучитьАтрибут() по номеру
МойХМЛ.ПолучитьАтрибут() по имени
МойХМЛ.Значение - значение текущего узла
10. Ko__ma 16.03.20 09:07 Сейчас в теме
(7)Спасибо,очень помогло
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот