PHP Ayrıştırma harf duyarlılığı

2 Cevap php

Öyle gibi ayarlanmış bir dosya ayrıştırma ediyorum:

<blah-name name="Turkey">
<blah-city name="Test"/>
<CAPS>
  <type type="5">
  <type-two type="6">
</CAPS>

Benim dosyanın üstünde, öyle gibi, $ xmlobj oluşturun:

$xmlobj = simplexml_load_file("TEST.XML");

Ben o özellikleri olarak tüm bu alan bir sınıf oluşturarak bir tabloya değerleri takacağım:

$record->{'blah-city'}->attributes()->name;

Ama, benim harfle XML içine kazmak için çalıştığınızda her şey darbeler:

$record->{'CAPS'}->type->attributes()->type;

My server blows up on the line above with this error: Fatal error: Call to a member function attributes() on a non-object and then it lists the line of the file where the above piece of code was written.

Ben bir var_dump($record->{'CAPS'}); yapmak için denedim ve tüm yapı düzgün değerleri bozulmadan ile var olduğunu göstermektedir.

Ben bu sorunu düzeltmek ve benim çalışma ile ilerlemeye hakkında gitmek nasıl biliyor mu? Bu büyük takdir!

2 Cevap

Bunu yaparken denedim:

$record->CAPS->type->attributes()->type;

Sadece olmadan gerekli hyphenated şu değil beri çevresindeki {'CAPS'},.

*Edit aşağıya yeni Yorumlarınız başına:

Interesting result. When I tracked down {'type-two'}->attributes()->id, it displayed the proper value.

In that case, it's probably that it has a problem with type->attributes()->type. PHP might have an internal memory reference problem karşı type since it has the same name. Try changing

<type type="5">

karşı

<type-one type="5">

senin XML. Bu sorunu çözmek gerekir. Daha sonra bu gibi erişebilirsiniz:

$record->{'CAPS'}->{'type-one'}->attributes()->type;

Buna ek olarak, bu denediniz mi?

$type_attributes = $record->{'CAPS'}->{'type-one'}->attributes();
$type_value = $type_attributes->type;

Bu potansiyel sorunu çözmek olabilir. Ben de buldum this Stack Overflow link bu yardımın olabilir.

Yukarıdaki XML kodu geçerli xml biçimlendirme değildir. Ben tam dosya nasıl göründüğünü biliyorum, ama şu geçerli xml dosyasını varsayarak yok:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <blah-name name="Turkey" />
    <blah-city name="Test" />
    <CAPS>
        <type type="5" />
        <type-two type="6" />
    </CAPS>
</data>

Beklendiği gibi Aşağıdaki PHP kodu çalışır:

$xmlobj = simplexml_load_file("TEST.XML");
$record = new stdClass();
foreach ($xmlobj as $key=>$value) {
    $record->$key = $value; 
}
var_dump($record->{'CAPS'});