使用PHP从XMl中的节点内部获取数据

时间:2011-05-28 14:57:07

标签: php xml simplexml

所以我不确定是什么或如何真正描述我需要什么,但希望有人会理解。

总xml文件的单个元素如下所示:

for ( $counter = 1; $counter load($file_xml); //make sure path is correct
  $note = $objDOM->getElementsByTagName("Event");

  // Loop through XML feed
  $i = 0;
  foreach( $note as $value )
  {
    $event_id       = $value->getAttribute('ID');
    # venue id
    $VenueID        = $value->getElementsByTagName("Venue");
    $venue_id       = $VenueID->item(0)->getAttribute("ID");
  }
}

arrgggg并没有真正复制他的代码。吉兹。

top是for循环的迭代。在foreach语句中我有insert语句;这是我试图插入图片网址的地方

<Event ID="IDIDIDIDID">
   <EventName>EVENT NAME</EventName>
   <Artist>
      <ArtistName>ARTIST NAME</ArtistName>
   </Artist>

   <Venue ID="IDIDIDID">
    <VenueName>VENUE NAME</VenueName>
       <Image>
           <Url>IMAGE_URL</Url>
           <Width>205</Width>
           <Height>115</Height>
        </Image>
      </Venue>
 </Event>

除了图片网址之外,我能够获得我需要的其他图片形式。我试图将其作为一个数组分解并获得第一个值但是没有用。我在这里看了另一篇文章,并尝试使用preg_match但是没有用。有谁知道我怎么做:

获取单个“事件”行中的图像的URL?

这是我的开始:

$Image          = $value->getElementsByTagName("Image");
$venue_img_2    = $Image->item(1)->nodeValue;

这将返回IMAGE_URL 205 115

注意:IMAGE_URL与205和115之间的“空格”似乎并不是“空间”

提前感谢。

2 个答案:

答案 0 :(得分:1)

假设您的Event节点有一个父节点(即<Events><Event>...</Event><Event>...</Event></Events>):

$xml = simplexml_load_file($file_xml);

foreach($xml->Event as $event) {
    $idAttr = 'ID';

    $event_id = (string) $event->attributes()->$idAttr;
    $venue_id = (string) $event->Venue->attributes()->$idAttr;

    $venue_img_2 = (string) $event->Venue->Image->Url;
}

答案 1 :(得分:0)

试试这个

$xml = simplexml_load_file("books.xml") 
   or die("Error: Cannot create object");

  foreach($xml->children() as $books){
foreach($books->children() as $book => $data){
  echo $data->id;
  echo $data->title;
  echo $data->author;
  echo "<br />";
}

}