[PHP-users 32019] Re: php4で、あるノード以下のツリーを取得する方法

s-ishii bbswx419 @ ybb.ne.jp
2007年 4月 22日 (日) 06:23:21 JST


石井です。
この問題、自己解決できました。
以下、解決方法を記載します。
ただ、他により良い実装方法があるような気がしますので、
代替案がある方はご連絡ください。

== 実装内容 ==============================================
$dom = domxml_open_mem($xmlData);
$xpath = $dom->xpath_new_context();
$nodesSub = $xpath->xpath_eval('//*[@id="sub"]');
$newDomSub = domxml_new_doc("1.0");

foreach ($nodesSub->nodeset as $node) {
  if($node->node_type() == XML_ELEMENT_NODE && $node->node_name() == "div"){
    $newNode = $newDomSub->create_element("tmp"); // (1)
    $newNode->append_sibling($node);
    $newDomSub->append_child($newNode);
    $divSubData = $newDomSub->dump_mem();
  }
}

== 結果 =============================================
$divSubData を少し形成すると、取得したいデータが得られました。

=====================================================


On Sat, 21 Apr 2007 01:35:01 +0900
s-ishii <bbswx419 @ ybb.ne.jp> wrote:

> 
> 初めまして、石井と申します。
> php4.4.6の環境で、以下のxmlのid="sub"以下のツリーを取得したい
> と考えているのですが、どう実装してよいか悩んでおります。
> 実装方法をご存知であれば、ご教授願えますでしょうか。
> 
> == XMLデータ ===============================
> <?xml version="1.0" encoding="UTF-8"?>
> <html xmlns="http://www.w3.org/1999/xhtml">
>  <body>
>   <div id="header"></div>
>   <div id="main">
>     コンテンツの内容です。<br/>
>     <div id="sub">
>       サブコンテンツの内容です。<br/>
>       <div id="link">
>       リンクです。<br/>
>       <a href="http://www.google.com">グーグル</a><br/>
>       </div>
>     </div>
>   </div>
>   <div id="footer">フッターです</div>
>  </body>
> </html>
> 
> == 取得したい結果(id="sub"以下のデータ) ====
> 
>  サブコンテンツの内容です。<br/>
>  <div id="link">
>  リンクです。<br/>
>  <a href="http://www.google.com">グーグル</a><br/>
>  </div>
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3




PHP-users メーリングリストの案内