skymario84
skymario84

Reputation: 123

PHP parse XML data

I have something like this:

  <client type="s" name="root" desc="" protocol="server" protocolext="" au="0" thid="0x15e9190">
     <request="0000" srvid="0000" time="" history="" answered=""></request>
     <times login="2013-04-16T10:59:16+0200" online="7001" idle="0"></times>
     <connection ip="127.0.0.1" port="0">OK</connection>
  </client>

Now, i need to parse this data into a PHP variables, something like this:

 $client_type = s; $name = root; $conn_ip = 127.0.0.1;

...and so on,is there a way to do that?

Tried bash, but it would be much easier if it can be done with php

Upvotes: 0

Views: 64

Answers (4)

ThW
ThW

Reputation: 19482

If you need to fetch data from a XML use Xpath:

$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);

$client_type = $xpath->evaluate('string(/client/@type)'); 
$name = $xpath->evaluate('string(/client/@name)');; 
$conn_ip = $xpath->evaluate('string(/client/connection/@ip)');

Demo: https://eval.in/124553

Upvotes: 0

gen_Eric
gen_Eric

Reputation: 227180

PHP has XML support. I like to use SimpleXML.

$xml = new SimpleXMLElement($xmlString);

$client_type = (string)$xml['type'];
$name = (string)$xml['name'];

$conn_ip = (string)$xml->connection['ip'];

Easy.

DEMO: https://eval.in/124545

Upvotes: 4

Max
Max

Reputation: 765

simplexml_load_file() or simplexml_load_string() loads xml as an object.

Upvotes: 0

Hoff
Hoff

Reputation: 243

You can try it with a xml Parser: https://www.php.net/xml, Best XML Parser for PHP

Upvotes: 0

Related Questions