2011-04-16 61 views
1

我嘗試根據XSD驗證XML。我找到了幾種方法來做到這一點。這兩個工作很好地寫出所有的錯誤,所以每個人打算使用什麼?這些XML驗證方法之間有什麼不同?

的XmlDocument和的XmlSchema類

XmlDocument document = new XmlDocument(); 
document.Load(xmlFilePath);  
document.Schemas.Add(@namespace,schemaFilePath); 
document.Validate(ValidationHandler); 
-----  
public void ValidationHandler(object sender, ValidationEventArgs e) 
{ 
    Console.WriteLine(e.Message); 
} 

XmlReaderSettings類

在這裏,我可以做一些設置和驗證,早在load()方法執行情況。

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.ValidationEventHandler += new ValidationEventHandler(ValidationHandler); 
settings.Schemas.Add(@namespace, schemaFilePath)); 
settings.ValidationType = ValidationType.Schema; 
XmlReader reader = XmlReader.Create(xmlFilePath, settings); 
document.Load(reader); 
reader.Close(); 
----- 
public void ValidationHandler(object sender, ValidationEventArgs e) 
{ 
    Console.WriteLine(e.Message); 
} 

回答

2

的差別是XmlReaderXmlDocument類之間。 XmlReader流式傳輸XML並一次讀取一個節點。另一方面,XmlDocument將整個XML讀入內存並與之協同工作。所以,一般來說,XmlDocument更易於使用,但不適用於大文件。

至於驗證而言,似乎類具有可比性,因此無論是選擇一個更易於使用,爲你(可能XmlDocument)或選擇XmlReader如果你希望大文件或者低內存消耗是非常重要的。

另外,要使用XmlReader進行驗證,您不需要像使用XmlDocument.Load()那樣使用,但類似while (reader.Read()) { }應該足夠。

相關問題