2012-03-11 111 views
0

我的文件的XML:如何顯示數據ID,名稱?

<pasaz:Envelope> 
<pasaz:Body> 
<loadOffe> 
<offe> 
<off> 
<id>120023</id> 
<name>my name John</name> 
<name>Test</name> 
</off> 
</offe> 
</loadOffe> 
</pasaz:Body> 
</pasaz:Envelope> 

如何查看PHP(ID和名稱)。

+2

http://php.net/dom – 2012-03-11 15:33:41

回答

1

如果你只是尋找一種簡單的方法來提取標籤的內容,但不想去正確地解析XML的一切麻煩,你可以做這樣的事情:

$xml = ""; // your xml data as a string 
function get_tag_contents($xml, $tagName) { 
    $startPosition = strpos($xml, "<" . $tagName . ">"); 
    $endPosition = strpos($xml, "</" . $tagName . ">"); 
    $length = $endPosition - ($startPosition + 1); 
    return substr($xml, $startPosition, $length); 
} 

$id = get_tag_contents($xml, "id"); 
$name = get_tag_contents($xml, "name"); 

這假定您沒有爲您的標籤分配任何屬性,並且每個標籤都是唯一的(在您給我們的示例中,我注意到了兩個「名稱」標籤,如果您希望這兩個標籤都需要製作此解決方案更健壯一些或做適當的XML解析)。

0

正如馬克的B他的意見建議,你應該使用DOM,要麼使用getElementsByTagName()DOMXPath,例如爲getElementaByTagName()

$dom = new DOMDocument; 
$dom->loadXML($xml); 
$ids = $dom->getElementsByTagName('id'); 
if($ids || !$ids->length){ 
    throw new Exception('Id not found'); 
} 
return $ids->item(0); 
1

如何獲得的所有項目? 示例(不起作用..)

$pliks = simplexml_load_file("file.xml"); 
foreach ($pliks->children('pasaz', true) as $body) 
{ 
foreach ($body->children() as $loadOffe) 
{ 
if ($loadOffe->offe->off) { 
echo "<p>id: $loadOffe->id</p>"; 
echo "$id->id"; 
echo "<p>name: <b>$name->name</b></p>"; 
} 
} 
// echo $loadOffe->offe->off->id; 
}