2017-07-06 6 views
1

XMLのコンテンツを文字列として取得するにはどうすればよいですか? 私はこのようなXMLがあります。PHPはXMLのrootNodeコンテンツを文字列として取得します

<?xml version="1.0" encoding="utf-8"?> 
<section> 
    <paragraph>some content</paragraph> 
    <custom>some more content</custom> 
</section> 

をし、私はこのような文字列としてセクションの内容たい:私は読んでおきドキュメントはこれまでのところ唯一のコンテンツを取得する方法について説明し

<paragraph>some content</paragraph> 
    <custom>some more content</custom> 

をルートノードのサブノードではない。

答えて

0

それはのDOMDocumentを使用して達成することができる(押しhereはアクションでそれを見るために)

$xmlStr = '<?xml version="1.0" encoding="utf-8"?> 
<section> 
    <paragraph>some content</paragraph> 
    <custom>some more content</custom> 
</section> 
'; 

$xml = new DOMDocument(); 
$xml->loadXML($xmlStr); 
if($xml->childNodes->length > 0) { 
    foreach($xml->childNodes->item(0)->childNodes as $rootChildNode){ 
     echo $xml->saveXML($rootChildNode); 
    } 
} 
+0

okが、私はいくつかの方法があります望んでコンテンツを一度に取得できます。 thx – Camel

+0

こんにちはラクダ。私の答えを受け入れてくれてありがとう。私は反復がないとそのような方法はないと思う。 https://stackoverflow.com/questions/2087103/how-to-get-innerhtml-of-domnodeをご覧ください。 – Dorad

0

xmlパーサーを使用して配列を作成し、それを操作できます。例えば:私はトラフのchildNodesを反復処理する必要が

<?php 
$xml = <<<XML 
<?xml version="1.0" encoding="utf-8"?> 
<section> 
    <paragraph>some content</paragraph> 
    <custom>some more content</custom> 
</section> 
XML; 

$values = []; 
$p = xml_parser_create(); 
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0); 
xml_parse_into_struct($p, $xml, $values); 
xml_parser_free($p); 

var_dump($values); 

http://php.net/manual/en/ref.xml.php

関連する問題