XDocument doc = XDocument.Parse(somestring);
但我怎麼驗證如果字符串somestring
是一個良好的XML。是Try Catch
做到這一點的唯一方法?
XDocument doc = XDocument.Parse(somestring);
但我怎麼驗證如果字符串somestring
是一個良好的XML。是Try Catch
做到這一點的唯一方法?
是試着抓住唯一的方法來做到這一點?
沒有爲XDocument
沒有TryParse
方法,所以try-catch
可能是最好的選擇。還要考慮根據模式驗證您的XML,因爲它不僅會檢查XML是否格式良好,還會檢查約束條件。
您可能會看到:Validation Against XML Schema (XSD) with the XmlValidatingReader
鏈接已更改 - 已編輯FYI。 – simonalexander2005
@ simonalexander2005,感謝您的編輯 – Habib
如果您只需要檢查是否合式的文檔,以最快的方式如下:使用的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,所以如果需要分析它們,例外情況是相同的。
由於XML文檔通常是機器生成的,因此假定其始終保持良好格式。該規則的例外情況通過例外報告:) –