как отобразить данные id, name? - PullRequest
0 голосов
/ 11 марта 2012

Мой файл 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 (идентификатор и имя).

Ответы [ 3 ]

1 голос
/ 11 марта 2012

Как получить все предметы?Пример (не работает ..)

$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;
}
1 голос
/ 11 марта 2012

Если вы просто ищете простой способ извлечь содержимое тега, но не хотите заниматься всеми проблемами правильного синтаксического анализа 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).

0 голосов
/ 11 марта 2012

Как отметил Марк Б в своем комментарии, вы должны использовать 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);
...