2012-02-07 111 views
1

我有一個關於用php讀取xml文件的問題。 我有一個樣本PHP文件:在php中讀取xml文件

///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」值。

有人可以幫助我嗎?

謝謝。

+0

*(相關)* [noob問題有關DOM文檔(http://stackoverflow.com/questions/4979836/noob-question-about-domdocument-in-php/4983721#4983721) – Gordon 2012-02-07 09:00:05

+0

[如何使用PHP的DOM解析器從XML中提取節點屬性](http://stackoverflow.com/questions/3993302/how-to-extract-a-node-attribute-from- xml-using-phps-dom-parser) – Gordon 2012-02-07 09:00:43

回答

2

標籤的名稱是PARAM和的名字屬性是名稱

$name = $value->getElementsByTagName("param")->firstChild->getAttribute('name')->nodeValue; 
+0

謝謝@Secator但但它似乎不起作用:(給我這個「DOMElement類的對象無法轉換爲字符串」錯誤 – tinks 2012-02-07 10:00:35

+0

嘗試增加' - > nodeValue'在 – 2012-02-07 10:49:49

1

名字是不是一個元素,它的附加器元件的屬性

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

編輯

$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

謝謝@Mark Ba​​ker – tinks 2012-02-07 09:27:28

+0

謝謝@Mark Ba​​ker。但它似乎不起作用:(給我這個「類DOMElement的對象無法轉換爲字符串」錯誤 – tinks 2012-02-07 10:00:14

0

nodeValue真的是空的。根據<param name="param1"></param>,您沒有指定一個。改用getAttribute方法。

1

@Tinks用「的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文件。

+0

,因爲我的XML是一種不同的文件末尾..這就是爲什麼我需要加載它.. – tinks 2012-02-07 10:04:22

+0

而是因爲我需要首先加載文件,因爲它是一個不同的xml文件@Stony – tinks 2012-02-07 10:05:59

+0

然後使用file_get_contents('file.xml')來獲取內容 new SimpleXMLElement(file_get_contents('file.xml')); – Stony 2012-02-07 14:03:54

-1

這裏是做什麼:

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