#xml #selenium #xpath #automation
#xml #селен #xpath #автоматизация #selenium
Вопрос:
Как мне написать XPath для приведенного ниже XML для извлечения данных из поля «fname» — где поле ‘Department’ содержит данные «IT» — а ID и ImgID одинаковы.
— Ниже приведен пример XML —-
[Пример XML][1]
<?xml version="1.0" encoding="UTF-8"?>
<dbdump>
<database name="testDatabase" schemaVer="1.0.0">
<table name="testTable">
<row>
<field name="ID">1</field>
<field name="lname">Smith</field>
<field name="fname">Tom</field>
<field name="department">HR</field>
<field name="ImgID">0</field>
</row>
<row>
<field name="ID">2</field>
<field name="lname">K</field>
<field name="fname">John</field>
<field name="department">IT</field>
<field name="ImgID">2</field>
</row>
<row>
<field name="ID">3</field>
<field name="lname">D</field>
<field name="fname">Sam</field>
<field name="department">IT</field>
<field name="ImgID">3</field>
</row>
<row>
<field name="ID">4</field>
<field name="lname">J</field>
<field name="fname">Tina</field>
<field name="department">IT</field>
<field name="ImgID">0</field>
</row>
</table>
</database>
</dbdump>
Комментарии:
1. Пожалуйста, отредактируйте свой пост и добавьте свой XML в виде текста. Изображения не помогают.
2. Добавлен образец XML в виде текста
3. Покажите, как вы пытались
4. Я только что смог извлечь все данные из поля «fname», используя приведенный ниже XPath, но мне нужна помощь, чтобы добавить дополнительные условия и посмотреть, смогу ли я отфильтровать и получить только те данные, которые упомянуты в моем вопросе (получить значение «fname», когда ‘department’ = HR и значения ID и imgID одинаковы) xpathExpression = «//database[@name=’TestDatabase’]/table[@name=’TestTable’]/row / field[@name=’fname’] /текст()»;
Ответ №1:
Немного более точный и эффективный XPath:
/dbdump/database/table/row[field[@name="department"] = "IT"][field[@name="ID"] = field[@name="ImgID"]]/field[@name="fname"]/text()