2013-10-22 13 views
12

BenXDocument.Parse Success veya Failure?

XDocument doc = XDocument.Parse(somestring); 

kullanarak Ama nasıl yapmak dize somestring iyi oluşturulmuş bir XML olup olmadığını doğrulamak ediyorum. Bunu yapmanın tek yolu Try Catch mu?

+2

XML belgelerinin normalde makine tarafından oluşturulduğundan, her zaman iyi biçimlendirilmiş olduğu varsayılır. Bu kuralın istisnaları, iyi istisnalar tarafından rapor edilir :) –

cevap

13

Bunu yapmanın tek yolunu mu deneyin?

Orada XDocument için herhangi TryParse yöntemdir, bu nedenle try-catch muhtemelen en iyi bahistir. Ayrıca XML'inizin bir şemaya göre doğrulanmasını da düşünün, çünkü yalnızca XML'in iyi oluşturulmuş olup olmadığını değil, aynı zamanda kısıtlamaları da kontrol edip etmediğini kontrol etmeyecektir.

Sen görebilirsiniz:

var isWellFormedXml = true; 
try 
{ 
    using (var reader = XmlReader.Create(stream)) // can be a mem stream for string validation 
    { 
     while (reader.Read()) {} 
    } 
} 
catch 
{ 
    isWellFormedXml = false; 
} 

değil mi Bu şekilde: Validation Against XML Schema (XSD) with the XmlValidatingReader

+1

link değiştirildi - düzenlenmiş FYI. – simonalexander2005

+1

@ simonalexander2005, düzenleme için teşekkürler – Habib

5

yalnızca Belgenin doğru biçimlendirilmiş olup olmadığını kontrol etmek gerekiyorsa, en hızlı şekilde aşağıdaki gibi XmlReader kullanmaktır XDocument DOM için bellek harcayın. BTW, XDocument.Parse(), XML'i işlemek için XmlReader'ı kullanır, dolayısıyla bunları analiz etmeniz gerekirse, istisnalar aynıdır.

İlgili konular