2013-10-22 282 views
12

我使用XDocument.Parse成功或失敗?

XDocument doc = XDocument.Parse(somestring); 

但我怎麼驗證如果字符串somestring是一個良好的XML。是Try Catch做到這一點的唯一方法?

+2

由於XML文檔通常是機器生成的,因此假定其始終保持良好格式。該規則的例外情況通過例外報告:) –

回答

13

是試着抓住唯一的方法來做到這一點?

沒有爲XDocument沒有TryParse方法,所以try-catch可能是最好的選擇。還要考慮根據模式驗證您的XML,因爲它不僅會檢查XML是否格式良好,還會檢查約束條件。

您可能會看到:Validation Against XML Schema (XSD) with the XmlValidatingReader

+1

鏈接已更改 - 已編輯FYI。 – simonalexander2005

+1

@ simonalexander2005,感謝您的編輯 – Habib

5

如果您只需要檢查是否合式的文檔,以最快的方式如下:使用的XmlReader:

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

這樣,你不這樣做爲XDocument DOM花費內存。順便說一句,XDocument.Parse()使用XmlReader處理XML,所以如果需要分析它們,例外情況是相同的。