Disregard my other comment.
readInnerXml does not advance the cursor, so you can call it more than once. I made a mistake testing this.
PHP - Manual: XMLReader::readInnerXml
2024-12-23
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
XMLReader::readInnerXml — Retrieve XML from current node
Reads the contents of the current node, including child nodes and markup.
此函数没有参数。
Returns the contents of the current node as a string. Empty string on failure.
此函数仅在 PHP 与 libxml 20620 或以上版本编译时可用。
官方地址:https://www.php.net/manual/en/xmlreader.readinnerxml.php