2011-01-24 22 views
5

XML neden bazı özel karakterlerde hata gösteriyor ve bazıları iyi mi?XML Ayrıştırma Hatası: tanımsız varlık - özel karakterler

Örneğin, aşağıdaki hatayı yaratacaktır,

<?xml version="1.0" standalone="yes"?> 
<Customers> 
    <Customer> 
     <Name>L&ouml;ic</Name> 
    </Customer> 
</Customers> 

ama bu tamam,

<?xml version="1.0" standalone="yes"?> 
<Customers> 
    <Customer> 
     <Name>&amp;</Name> 
    </Customer> 
</Customers> 

ben php ile özel karakteri dönüştürmek - htmlentities('Löic',ENT_QUOTES) bu arada.

Bunu nasıl aşabilirim?

Teşekkürler.

DÜZENLEME: Ben gibi L&#243;ic

şimdi sayısal karakterler özel karakterler dönüştürmek için php nasıl kullanılacağını bulmak zorunda sayısal karakter kullanırsanız iyi çalışıyor bulundu

!

cevap

17

XML şartnamede tanımlanan beş varlıklar vardır - &amp;, &lt;, &gt;, &apos; ve &quot;

lots of entities defined in the HTML DTD vardır.

HTML'dekileri genel XML'de kullanamazsınız.

Sen sayısal referansları kullanabilirsiniz, ama sadece temelde aşağı kaynar senin character encodings düz (alma muhtemelen daha iyi olurdu: Eğer işlerseniz UTF-8

  • verileri kaydetmek

    • Set your editor Bir programlama dili ile veri, UTF-8 farkında
    • olduğundan emin olun Verileri bir veritabanında saklarsanız, UTF-8
    • için yapılandırıldığından emin olun. üstbilgiler bunu belirtiyor UTF-8 (XML durumunda, UTF-8 varsayılan, bu yüzden hiçbir şey belirtmeden değil neredeyse kadar iyidir) o, bir yerleşik varlık

    )

  • +0

    Dorward: Teşekkürler. Bu iconv ('UTF-8', 'ISO-8859-1 // TRANSLIT', 'Löic') ile denedim, sonra bana bu hatayı veriyor - Notice: iconv() [function.iconv]: Tamamlanmamış bir multibyte algılandı ... giriş kodundaki karakter ... – laukok

    +1

    +1, ancak yine de XML'de yasaklanan karakterler için sayısal varlıkları kullanması gerekir (örneğin, U + 0003). – Artefacto

    +0

    XML'de   veya ö göndermeye çalışıyorsanız, UTF-8 yardımcı olmayacaktır. – mikato

    3

    değildir çünkü bunun yerine DTD'de beyan edilmesi gereken harici bir varlık.