специфичный для xpath выбор с условием

#xpath #conditional-statements

#xpath #условные операторы

Вопрос:

это может быть просто, но я хотел бы выбрать все внутри <div class="rc-box-citations-body"> при условии, что оно должно принадлежать <div class="definitionBox" id="meaning-1-1"> , тем самым однозначно идентифицируя его. Как я могу это сделать с помощью xpath? Спасибо.

  <div class="definitionIndent">
  <div class="definitionNumber">1.a</div>
  <div class="definitionIndent">
    <div class="definitionBox" id="meaning-1-1">
      <span class="textmedium">
        <span class="stampNoBorder">text</span>
        <span class="definition">text</span>
      </span>
    </div>
    <div class="definitionBox">
      <div class="rc-box-citations">
        <div class="rc-box-citations-top">
          <span class="rc-citations-north-west">amp;#160;</span>
          <span class="rc-citations-north-east">amp;#160;</span>
        </div>
        <div class="rc-box-citations-body"><span class="citat">text</span> <a class="sourcepop" href="javascript:void(0);"><span class="source">text</span><span class="popup">text</span></a></div>
        <div class="rc-box-citations-bot">
          <span class="rc-citations-south-west">amp;#160;</span>
          <span class="rc-citations-south-east">amp;#160;</span>
        </div>
      </div>
    </div>
  </div>
</div>
  

Комментарии:

1. «при условии, что он должен принадлежать» … значение <div class="rc-box-citations-body"> является потомком <...id="meaning-1-1"> ?

2. да, пожалуйста, проясните ситуацию. В вашем XML я не вижу совпадений, соответствующих указанным вами критериям. Не существует divs с class='rc-box-citations-body' в качестве потомков div с id='meaning-1-1' .

Ответ №1:

Если я немного изменю ваш xml и возьму при условии, что он должен принадлежать, чтобы означать , что это потомок …. тогда этот xpath работает

//div[@class='definitionBox'][@id='meaning-1-2']//div[@class='rc-box-citations-body']

XML является

 <?xml version="1.0" encoding="utf-16"?>
<div class="definitionIndent">
  <div class="definitionNumber">1.a</div>
  <div class="definitionIndent">
    <div class="definitionBox" id="meaning-1-1">
      <span class="textmedium">
        <span class="stampNoBorder">text</span>
        <span class="definition">text</span>
      </span>
    </div>
    <div class="definitionBox" id="meaning-1-2">
      <div class="rc-box-citations">
        <div class="rc-box-citations-top">
          <span class="rc-citations-north-west"></span>
          <span class="rc-citations-north-east"></span>
        </div>
        <div class="rc-box-citations-body">
          <span class="citation">text</span>
          <a class="sourcepop" href="javascript:void(0);">
            <span class="source">text</span>
            <span class="popup">text</span>
          </a>
        </div>
        <div class="rc-box-citations-bot">
          <span class="rc-citations-south-west"></span>
          <span class="rc-citations-south-east"></span>
        </div>
      </div>
    </div>
  </div>
</div>
  

Инструмент, который я использовал, — XPathVisualizer:

введите описание изображения здесь

Комментарии:

1. Спасибо, //div[@class='rc-box-citations-body'] ничему не соответствует, но это потому, что я допустил ошибку в своем примере выше (я новичок, у меня возникли некоторые проблемы с поиском правильных терминов, чтобы сказать, что именно мне нужно). Я отредактировал это сейчас, проливает ли это больше света на то, что делать?