Чтение xml файла в php - PullRequest
       1

Чтение xml файла в php

1 голос
/ 07 февраля 2012

У меня вопрос по чтению xml-файла с php.У меня есть пример файла php:

/// file.xml

 <appender name="app1">
      <param name="param1"></param>
 </appender>

Теперь я хочу получить значение имени параметра.У меня есть этот код.

function getURL($aURL){

$objDOM = new DOMDocument();

////the file.xml    
$objDOM->load($aURL);  
$note = $objDOM->getElementsByTagName("appender");

foreach ( $note as $value)  {
    ///First try
    $name = $value->getElementsByTagName("name")->firstChild->nodeValue;

    ///Second try
    ///$logName = $value->getElementsByTagName("name");
    ///$name = $logName->item(0)->nodeValue;

}

}

Для моей первой и второй попытки оба возвращаются пустыми.Не выдает значение "app1".

Может ли кто-нибудь помочь мне в этом?

Спасибо.

Ответы [ 5 ]

2 голосов
/ 07 февраля 2012

Имя тега param и имя атрибута name :

$name = $value->getElementsByTagName("param")->firstChild->getAttribute('name')->nodeValue;
1 голос
/ 07 февраля 2012

@ Связывает с "SimpleXML", его немного легче читать значения.

<?php
  $xmlString = '<appender name="app1">
      <param name="param1" value="2">123</param>
      <param name="param2" value="3">345</param>
 </appender>';

$xml = new SimpleXMLElement($xmlString);

foreach($xml->param as $out) {
    echo $out['name']."  ";
    echo $out['value']."<br />";
}
?>

Вот краткий пример, как читать XML-файл.

1 голос
/ 07 февраля 2012

имя не является элементом, это атрибут элемента appender

$name = $value->getElementsByTagName("param")->firstChild->getAttribute("name");

EDIT

$data = '<appender name="app1">
    <param name="param1"></param>
    <param name="param2"></param>
</appender>';

$objDOM = new DOMDocument();
$objDOM->loadXML($data);

$appenders = $objDOM->getElementsByTagName("appender");

foreach ($appenders as $appender)  {
    $params = $appender->getElementsByTagName("param");
    foreach($params as $param) {
        $name = $param->getAttribute("name");
        var_dump($name);
        break;
    }
}
0 голосов
/ 07 февраля 2012

Вот что нужно сделать:

Load the XML file
Get the name of the first element
Create a loop that will trigger on each child node, using the children() function
Output the element name and data for each child node
0 голосов
/ 07 февраля 2012

Ваш nodeValue действительно пуст. Согласно <param name="param1"></param>, вы не указали один. Вместо этого используйте метод getAttribute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...