Bazı değil tüm alt düğümler seçin

0 Cevap php

Ben aşağıdaki XML yapıya sahiptir:

<?xml version="1.0" encoding="ISO-8859-1"?>
<articles>
  <article id="1">
    <title>Makale başlığı 001</title>
    <short>Short text</short>
    <long>Long text</long>
  </article>
  <article id="2">
    <title>Article title 002</title>
    <short>Short text</short>
    <long>Long text</long>
  </article>
</articles>

Ben sadece <title> ve <short> seçmek istiyorum.

Şu anda her şeyi görüntülemek için kullanıyorum:

 $queryResult = $xpathvar->query('//articles/article'); // works fine grabs all articles
 foreach($queryResult as $result){
   echo $result->textContent;
 }

Beklenen çıkışı olacaktır:

Makale başlığı 001

Kısa metin

Herhangi bir yardım büyük mutluluk duyacağız.

Çalışma çözüm!

if ($artId == "") {
    $queryResult = $xpathvar->query('//articles/article/*'); // grab all children
    foreach($queryResult as $result){
      if($result->nodeName === 'title' || $result->nodeName === 'short') {
          echo $result->textContent;
      }
    }
}else{
    $queryResult = $xpathvar->query(sprintf('//articles/article[@id="%s"]/*', $artId)); // Show requested article
    foreach($queryResult as $result){
      if($result->nodeName === 'title' || $result->nodeName === 'long') {
          echo $result->textContent;
      }
    }
}

0 Cevap