Как мне написать XPath для XML-файла

#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()