|
Не работает if в xpath
|
|||
---|---|---|---|
#18+
Добрый день, Пытаюсь написать xpath условие 'выбор SimpleValue в зависимости от PropertyName' для xml: <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap=" http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <input xmlns=" http://www.lmsoftmdm.ru" xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <data> <Class>Справочник.МатериальноТехническиеРесурсы</Class> <Values> <Value> <PropertyName>Код</PropertyName> <Value> <SimpleValue xsi:type="xs:string">000000004</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Наименование</PropertyName> <Value> <SimpleValue xsi:type="xs:string">Форд</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>НаименованиеПолное</PropertyName> <Value> <SimpleValue xsi:type="xs:string">Форд Фокус</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>ЕдиницаИзмерения</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Комментарий</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Статус</PropertyName> <Value> <SimpleValue xsi:type="xs:string">0</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Эталон</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Код3</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Стандарты</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>СтатусЗаписи</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Классификатор 1 длинное наименование очень длинное</PropertyName> <Value> <SimpleValue xsi:type="xs:string">Кл1_1</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Классификатор 2авы авы </PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Классификатор 3</PropertyName> <Value> <SimpleValue xsi:type="xs:string">Гр</SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>Классификатор 4 переимено</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>йцукен</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> <Values> <Value> <PropertyName>фывап</PropertyName> <Value> <SimpleValue xsi:type="xs:string"></SimpleValue> </Value> </Value> </Values> </data> </input> </soap:Body> </soap:Envelope> Самое условие: if (/soap:Envelope/soap:Body/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='input']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='data']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Values']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='PropertyName']/text()='Наименование') then /soap:Envelope/soap:Body[1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='input'][1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='data'][1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Values']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='SimpleValue']/text() else 0 По оно выдает почему то все значения SimpleValue Подскажите,в чем может быть дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2015, 14:07 |
|
Не работает if в xpath
|
|||
---|---|---|---|
#18+
Неохота разгребать эту неформатированную кашу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2015, 14:31 |
|
Не работает if в xpath
|
|||
---|---|---|---|
#18+
Привожу более читабельный вариант. Есть xml: <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap=" http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <input xmlns=" http://www.lmsoftmdm.ru" xmlns:xs=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <data> <Class>Справочник.МатериальноТехническиеРесурсы</Class> <Values> <Value> <PropertyName>Код</PropertyName> <Value> <SimpleValue xsi:type="xs:string">000000004</SimpleValue> </Value> </Value> </Values> <Values> </data> </input> </soap:Body> </soap:Envelope> Необходимо в нем, выбрать значение <SimpleValue...в зависимости от PropertyName. Написал условие: if (/soap:Envelope/soap:Body/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='input']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='data']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Values']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='PropertyName']/text()='Наименование') then /soap:Envelope/soap:Body[1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='input'][1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='data'][1]/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Values']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='Value']/*[namespace-uri()='http://www.lmsoftmdm.ru' and local-name()='SimpleValue']/text() else 0 Но оно почему то, не отрабатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2015, 14:53 |
|
|
start [/forum/topic.php?fid=14&fpage=10&tid=1332243]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 248ms |
total: | 405ms |
0 / 0 |