Имя: Пароль:
1C
 
XPath Поиск по техтовому содержанию
0 assest
 
21.10.15
11:49
Файл = Новый ЧтениеXML();
    Файл.ОткрытьФайл(путь);
    ФайлDOM = Новый ПостроительDOM();
    XML = ФайлDOM.Прочитать(Файл);

    Разыменователь = Новый РазыменовательПространствИменDOM(XML);
    Запрос = "//model_type_date"";

    Результат = XML.ВычислитьВыражениеXPath(Запрос, XML, Разыменователь, ТипРезультатаDOMXPath.УпорядоченныйИтераторУзлов).ПолучитьСледующий();

Вопрос как указать что мне нужны model_type_date, у каторых есть
1 assest
 
21.10.15
11:49
Узел bm_mark_id, с текстовым содержанием "123321"
2 assest
 
21.10.15
11:51
Или есть model_type_date/bm_mark_id/#text , с текстовым содержанием или значением узла "123321"
3 spock
 
21.10.15
11:54
(2) "//model_type_date/bm_mark_id/[@text='123321']"
4 Дык ё
 
21.10.15
12:00
(1) //model_type_date[bm_mark_id/text()="123321"]
5 spock
 
21.10.15
12:02
Пошли варианты :)
Предлагаю показать кусочек самого XML
6 assest
 
21.10.15
12:12
<model_type_list>
<model_type_date>
<bm_mark_id>1</bm_mark_id>
<bm_model_id>1</bm_model_id>
<bm_crc_key>bff6d75b777e8f0656041f1a74a17c05</bm_crc_key>
<bm_model_type_model>-</bm_model_type_model>
<bm_motor_power>738 кВт / 1 004 л.с.</bm_motor_power>
<bm_motor_engine>137.4 l (137.4 l)</bm_motor_engine>
<bm_series_models>400</bm_series_models>
<bm_graduation_year>06/1993 -</bm_graduation_year>
<bm_cylinder>6</bm_cylinder>
<bm_manufacturer_model_series>-</bm_manufacturer_model_series>
<bm_type_of_vehicle>Лодочные моторы Внутри судна</bm_type_of_vehicle>
<bm_body_type>-</bm_body_type>
<bm_body>-</bm_body>
<bm_sample_chassis>-</bm_sample_chassis>
<bm_type_of_bridge>-</bm_type_of_bridge>
<bm_os_configuration>-</bm_os_configuration>
<bm_other_types_of_motors>-</bm_other_types_of_motors>
<bm_engine_manufacturer>-</bm_engine_manufacturer>
<bm_engine_type>Дизельный двигатель, Турбонагнетатель ОГ</bm_engine_type>
<bm_design>-</bm_design>
<bm_mixture>PF-насос</bm_mixture>
<bm_onboard_voltage>0 V</bm_onboard_voltage>
<bm_market_introduction>-</bm_market_introduction>
<bm_country_of_origin>DK</bm_country_of_origin>
</model_type_date>
7 assest
 
21.10.15
12:15
(4) Ожидается")"
8 assest
 
21.10.15
12:15
(3)Ошибка при вызове метода контекста (ВычислитьВыражениеXPath)
9 assest
 
21.10.15
12:19
(4) необходимы ординарные кавычки
10 assest
 
21.10.15
12:19
//model_type_date[bm_mark_id/text()='123321']
так работает
11 spock
 
21.10.15
12:20
(8) "//model_type_date/bm_mark_id[text()='123321']"
12 spock
 
21.10.15
12:24
+11 тупанул, нужны model_type_date по определенным bm_mark_id. в (10) верно тогда.
13 assest
 
21.10.15
12:25
Вроде обе строки возвращают одно и тоже (11) (11)
14 Дык ё
 
21.10.15
13:08
(9) свистишь, стандарту соответствует и в 8.3.6.2332 работает
15 assest
 
21.10.15
13:35
14) Я смотрел на 8,2
16 Jaap Vduul
 
21.10.15
14:07
Если узел model_type_date всегда принадлежит только model_type_list, то для более лучшей производительности не следует использовать селектор "//", а вместо этого указывать путь явно:
/model_type_list/model_type_date[bm_mark_id='123321']
17 assest
 
21.10.15
16:39
(16) Спасибо это было полезно
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан