Soru XmlReader - Kendiliğinden kapanan eleman bir EndElement olayını tetiklemiyor mu?


Bir döngü kullanarak bir XML dosyasını ayrıştırmak için .NET'te XmlReader kullanıyorum:

while (xml.Read()) {
   switch xml.NodeType {
     case XmlNodeType.Element:
      //Do something
     case XmlNodeType.Text:
      //Do something
     case XmlNodeType.EndElement:  
      //Do something
   }
}

Aşağıdaki XML kodunun bazı EndElement düğümleri üretmemesinin normal olup olmadığını merak ediyordum? Lütfen önce /> eksik alan dikkat edin, ama sorun olduğunu düşünmüyorum.

<date month="November" year="2001"/>
<zone name="xml"/>

Kendiliğinden kapanma elemanını belirtmek için farklı bir NodeType veya özellik var mı?


32
2017-10-27 20:52


Menşei




Cevaplar:


Hayır, kontrol ederek kontrol et. XmlReader.IsEmptyElement.

Bu mülkün dokümanlarında:

Karşılık gelen bir EndElement node değil   boş öğeler için oluşturulmuş.


54
2017-10-27 21:03



Arasındaki farkı nasıl anlarım? <element /> ve <element></element> benim zamanım NodeType olduğu StartElement? IsEmptyElement olduğu true Her iki senaryo için. - Brian Warshaw
@BrianWarshaw: Bir EndElement Düğüm var, temelde ... Sen üzerinde olduğun zaman bunu hemen yapmanın hiçbir yolunu bilmiyorum StartElement. - Jon Skeet
Teşekkürler - yanılmış olabileceğimi ortaya çıkıyor IsEmptyElement bu durumlarda doğru olmak. Çok uzun :-) bu çıkışa bakıyorum - Brian Warshaw