0

我想在 PSR-7 响应中解析巨大的 xml。Defaults XmlReader 看起来不错,但似乎不能使用 PSR-7 StreamInterface。

我的 XML 看起来:

<root>
  <item>
   ...
  </item>
  <item>
   ...
  </item>
</root>

我想使用类似的东西:


$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'http://example.com/large.xml');

$streamer = new MyXmlStreamer($response->getBody());

while ($item = $streamer->getNode()) {
    var_dump($item); // where $item would be item outerXml
}

任何想法如何实现这一目标?

4

1 回答 1

0

您可以使用xml-string-streamer

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'http://example.com/large.xml');

$stream = $response->getBody();

// Construct the default parser (StringWalker)
$parser = new Parser\StringWalker();

// Create the streamer
$streamer = new XmlStringStreamer($parser, $stream);

// Iterate through nodes
while ($node = $streamer->getNode()) {
   $simpleXmlNode = simplexml_load_string($node);
   //echo (string)$simpleXmlNode->firstName;
 }
于 2019-07-28T09:12:42.283 回答