php basit xml elemanı soru / bug

2 Cevap php

Bazı xml, diyelim <names number="12"></names>

Ben şu çalıştırdığınızda:

$simpleXMLElement = new SimpleXMLElement($xml);
pr($simpleXMLElement);

Ben şu olsun:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [number] => 12
        )

    [0] => 

)

O 0 girişi atar. Bu çok tuhaf. Ben temsil etmek gerekiyordu bilmiyorum. Bunu yapmak yerine, eğer:

<names number="12"><name first="oliver" /></names>

Ben şu çıktıyı alırsınız:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [number] => 12
        )

    [name] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [first] => oliver
                )

        )

)

Bu beklendiği gibi olduğunu (en azından benim için). Herhangi bir düşünce / yön?

2 Cevap

Birincisi: Eğer doğru mesajı biçimlendirmek yoksa, XML gösterilmeyecektir. En az 4 boşluk ile herhangi bir kod girinti.

İkincisi, beklemeyin print_r() veya var_dump() SimpleXML büyü çok kullanır çünkü bir SimpleXMLElement tam bir temsil vermek, bu nedenle çocuklar ve nitelikleri olacak ille için çıktı sırıtmak.

Sadece SimpleXML elemanı ayrıştırma kirli hızlı-ve-iş yapıyor gibi görünüyor: Eğer varsa beri <names></names>, bunun içindeki elemanları bekliyor gibi, öğenin içinde bir dizi ekler ve öyle değil ne zaman names etiketleri içinde herhangi unsurları bulmak, onu vermek ne ad bilmiyor beri 0 tuşu, boş bir dizi, bırakır.

Kısa bir etiketi (<names />) boş içerik oluşturmak gerekir. (Bu sesler gibi garip gibi.)