2

Has someone know how to jump to the next element in xml? i.e

<xml>
<node></node>
<text number="2">Text number 2</text>
<text number="3">Text number 3</text>
...
<text number="N">Text number N</text>
...
<node></node>
</xml>

I would like to be able to jump to element with number 3 then iterate few times forward.

element2 = xpath('//text[@number="2"]')
element3 = element2.nextElement()
returns <text number="3">Text number 3</text>
element4 = element3.nextElement() ...

I know that I can find all elements with attribute 'number' then iterate over them but important for me is to be able to go to next element starting from selected (element after) - example is just simplified

Thanks :)

user3900778
  • 227
  • 3
  • 14

1 Answers1

0

Working examples are a great way to explore. xpath gives you a list of elements that match your query. help on one of those elements tells you what you want to know.

>>> import lxml.etree
>>> root=lxml.etree.fromstring("""<xml>
... <node></node>
... <text number="2">Text number 2</text>
... <text number="3">Text number 3</text>
... ...
... <text number="N">Text number N</text>
... ...
... <node></node>
... </xml>""")
>>> elements=root.xpath('//text[@number="2"]')
>>> elements
[<Element text at 0x7fdd45d04d88>]
>>> help(elements[0])

...

 |  getnext(...)
 |      getnext(self)
 |      
 |      Returns the following sibling of this element or None.

...
tdelaney
  • 73,364
  • 6
  • 83
  • 116