НОКОГИРИ :: XML |Удалить родителя, где количество детей = 0 - PullRequest
1 голос
/ 21 октября 2011

Все, что я хочу сделать, - это проанализировать приведенный ниже XML-код и удалить элементы Peter и Sam , поскольку у них нет дочерних элементов (также можно сказать пустых) и President элемент после этого, так как он будет пустым. Эта вложенная вещь сводит меня с ума!

<Office  id="xyz" scope="node">
  <John>
    <age>23</age>
    <ssn>230231111</ssn>
  </John>
  <Peter>
  </Peter>
  <John>
    <age>25</age>
    <ssn>222222222</ssn>
  </John>
 <President>
  <Sam>
  </Sam>
 </President>
</Office>   

1 Ответ

4 голосов
/ 21 октября 2011

Похоже, что вы хотите:

doc.xpath('//*[not(*) and normalize-space(text())=""]').remove
  • not (*) выбирает узлы без дочерних элементов
  • normalize-space (text ()) = "" выбирает узлы с пустымитекст (обрезанный пробел)

Сделайте это дважды, чтобы удалить президента тоже.

...