2012-03-11 61 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; 
} 
相关问题