Что такое SimpleXML-версия этого DOMDocument XML? - PullRequest
0 голосов
/ 09 февраля 2012

Я понимаю, что SimpleXML гораздо более эффективен, чем DOMDocument.Любой совет о том, как я бы преобразовал ниже в версию SimpleXML?

    <?php
  $doc = new DOMDocument();
  $doc->load( 'feedpage.xml' );


  $Main = $doc->getElementsByTagName( "varOne" );
  foreach( $Main as $varOne )
  {
  $VarTwo = $varOne->getElementsByTagName( "VarTwo" );
  $VarTwo = $VarTwo->item(0)->nodeValue;

  $VarThree = $varOne->getElementsByTagName( "VarThree" );
  $VarThree = $VarThree->item(0)->nodeValue;

  $VarFour = $varOne->getElementsByTagName( "VarFour" );
  $VarFour = $VarFour->item(0)->nodeValue;

  $VarFive = $varOne->getElementsByTagName( "VarFive" );
  $VarFive = $VarFive->item(0)->nodeValue;

  echo "$VarTwo - $VarThree - $VarTFour - ETC\n";
  echo "<img src=\"$VarFive\" />";
  echo "<a href=\"$VarFour\" target=\"_blank\">Link</a>";
  }
  ?>

1 Ответ

1 голос
/ 09 февраля 2012

Начните с чего-то вроде этого:

$doc = simplexml_load_file("feedpage.xml");

Затем (поскольку я не знаю, как выглядит ваш XML-файл), попробуйте:

<code>echo "<pre>".print_r($doc,true)."
";

, чтобы увидеть, как именно получается результирующий объект. Оттуда вы сможете выбрать части, которые вам нужны, чтобы построить то, что вы хотите.

Изменить:

Если вы выводите:

SimpleXMLElement Object ( 
    [varOne] => SimpleXMLElement Object ( 
        [varOne] => Title 
        [varTwo] => A description 
        [VarThree] => A Link 
        [VarFour] => An Image
    )
)

Вы можете сделать это, чтобы получить доступ к свойствам каждого из них:

foreach($doc as $row) {
    $title = $row->varOne;
    $description = $row->varTwo;
    // etc.
}

Таким образом, с помощью цикла foreach вы можете пройти через каждый основной элемент и получить доступ к свойствам каждого элемента.

И если вы хотите поместить код в комментарии, вы можете использовать backtick (`), чтобы окружить ваш текст, но он не работает хорошо для блоков кода (например, тот, который вы хотели опубликовать). Лучше всего подходит для переменных или других коротких битов.

Окончательное редактирование:

Давайте возьмем этот пример объекта:

SimpleXMLElement Object ( 
    [varOne] => SimpleXMLElement Object ( 
        [varOne] => "Title"
        [varTwo] => "Description"
        [varThree] => "Link"
        [varFour] => "Image"
        [varFive] => SimpleXMLElement Object (
            [varA] => "something"
            [varB] => SimpleXMLElement Object (
                [varX] => "a string"
            )
            [varC] => "another thing"
        )
    )
)

Допустим, все это содержится в переменной $obj. Теперь давайте скажем, что мы хотели, что в varX. Мы бы получили к нему доступ так:

echo $obj->varOne->varFive->varB->varX;

Помимо этого, я не знаю, что еще тебе сказать. Вам необходимо внимательно изучить имеющиеся у вас объекты и определить, как они структурированы. Экстраполируйте то, что вы узнали здесь, и примените это к вашей ситуации.

...