php
  • xpath
  • domxpath
  • 2013-02-12 127 views 0 likes 
    0

    我想從下面的XML中提取屬性BODY和TYPE,並輸出TYPE作爲div類和正文作爲文本。PHP Xpath多個節點

    例如:

    foreach (...) { 
    echo "<div class='$type_value'>$body_value</div>" 
    } 
    

    我的XML:

    <smses> 
    <sms body='something' type='1' address='1234'> 
    <sms body='something' type='2' address='12345'> 
    <sms body='something' type='2' address='1234'> 
    </smses> 
    

    我的代碼(迄今爲止僅提取一個屬性 - 體):

    $doc = new DOMDocument(); 
    $doc->load('xml/sms.xml'); 
    
    $path = new Domxpath($doc); 
    
    $num = $_POST["sel"]; 
    
    $result = $path->query("//smses/sms[@address='$num']/@body"); 
    
    foreach($result as $res) 
    { 
    echo "<div id='sms'>".$res->textContent.'</div><br/><br/>'; 
    } 
    
    +1

    獲取匹配'sms'元素(而不是他們的'body'屬性),並在循環中使用'getAttribute()'。 – salathe 2013-02-12 11:31:25

    回答

    1

    刪除/@body從XPath的,讓你選擇實際<sms>元素,使用即可獲得type屬性及其正文進入<div>

    $result = $path->query("//smses/sms[@address='$num']"); 
    
    foreach($result as $res) 
    { 
        echo "<div id='sms' class='" . $res->getAttribute("type") . "'>". $res->getAttribute("body").'</div><br/><br/>'; 
    } 
    

    Demo

    +0

    我是否也必須將textContent更改爲getAttribute(「body」)? – 2013-02-12 11:45:42

    +1

    是的,我的壞。更新了答案。 – MrCode 2013-02-12 12:35:53

    相關問題