2009-03-04 15 views
1

İşte bazı C# kodu alıntı bir tür kaçan -alıntı. Ama XmlWriter.WriteAttributeString için dokümanlar (String, String) de ki: özellik değeri çift veya tek tırnak işareti içerirXmlWriter sadece

, bunlar & quot ile değiştirilir vardır; ve & apos; sırasıyla.

Dokümanların söylediklerini yapmasını sağlamak için ayarlamam gereken bir bayrak var mı?

+0

Anlamsal olarak aynı oldukları için, bunun neden sorunlara yol açtığını açıklayabilir misiniz? –

+0

Eski sistemlerle uyumluluk, ne yazık ki. Kuşkusuz ki, .NET'in XmlWriter'in örtüşen hatalara sahip görünmemesi bir sorun olmazdı. : P – Ken

+0

Böylece eski sistem geçerli XML'yi anlayamıyor. Tran. –

cevap

7

Kod bakmak için .Net Reflector kullanırsanız, System.Xml.XmlTextEncoder.Write (string) yönteminin çağrıldığını göreceksiniz. İşte ilgi kod: Olması gerekmez çünkü

if (!this.inAttribute || (this.quoteChar != ch)) 
    this.textWriter.Write('\''); 
else 
    this.WriteEntityRefImpl("apos"); 

bir özellik değeri yazma, bir tek tırnak kaçmış değil. Sadece bir metin öğesi yazarken "& apos;" kullanıldı.

2

Bu, XmlWriter'da bir hata değil, eski sisteminizde bir hata. Özellik değeri kesme işareti ile ayrılmış ise, bir özellik değeri tırnak içerebilir: XML 1.0 tavsiyesinde AttValue tanımına bakarsak

, sen XmlWriter o yapıyor olması gerekiyordu tam olarak ne yaptığını göreceksiniz işaretleri ve tırnak işaretleri ile sınırlandırılmışsa, bir özellik değeri kesme işareti içerebilir. XmlTextWriter'dan bir sınıf türetebilir ve WriteAttributes ve WriteAttributeString yöntemlerini geçersiz kılabilirsiniz. İşe yarayabilir. Bununla birlikte, ad alanlarına ve kodlamalara dikkat edin.

+0

Resmi dokümanlar bir yöntemin bir şey yapması gerektiğini söylediğinde ve bunu yapmazsa, buna bir hata derim. YMMV. :-) – Ken

+0

Elbette, ancak bu dokümanlardaki bir hatadır. Çok yardımcı olmaya çalışıyorlar. Belgelerin * not alması gereken, uygulamaya özgü davranışlardır, ör. XML önerisi gerektirmese bile yöntemin kaçtığı gerçeği. –