如何显示数据id、名称


how to display data id, name?

我的文件xml:

    <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和名称)。

如果您只是想寻找一种简单的方法来提取标记的内容,但又不想在正确解析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");

这假设您没有为标记分配任何属性,并且每个标记都是唯一的(在您给我们的示例中,我注意到了两个"name"标记,如果您想要这两个标记,则需要使此解决方案更加健壮或进行适当的XML解析)。

如何获取所有项目?示例(不起作用..)

$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;
}

正如Marc 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);