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

    다음 xml에서 BODY 및 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' 요소를 가져옵니다 :는 XPath 0 당신은 당신이 <div>type 속성과 그 본문을 얻을 수 사용, 실제 <sms> 요소를 선택하도록 그것들의'body' 속성), 그리고 루프 내에서'getAttribute()'를 사용하십시오. – salathe

    답변

    1

    제거 대신 (

    $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")로 변경해야합니까? –

    +1

    예, 제 잘못입니다. 답변을 업데이트했습니다. – MrCode

     관련 문제

    • 관련 문제 없음^_^