我在寫一個叫做的類,其類別爲,它有兩個靜態方法用於從外部資源中檢索XML數據。在我下面的例子中,我只會展示一個,因爲它們非常相似。這個XDocument代碼是否安全?
我想知道的是,無論這個代碼是無效的URL,無效的數據等等,這個代碼是否是「安全的」。基本上使它更加健壯。 這裏是德碼
private static string XmlUri
{
get { return "path-to-xml-file"; }
}
private static XDocument XmlFile { get; set; }
public int ID { get; set; }
public string Name { get; set; }
public int Parent { get; set; }
/// <summary>
/// Gets a specific category
/// </summary>
/// <param name="id"></param>
/// <returns>A Category with the specified ID</returns>
public static Category Get(int id)
{
try
{
if (XmlFile == null)
XmlFile = XDocument.Load(XmlUri);
}
// Invalid URL or data
catch (Exception ex)
{
// TODO: Log exception
Console.WriteLine(ex.Message);
}
if (XmlFile == null)
return null;
var cat = from category in XmlFile.Descendants("Category")
where category.Attribute("id").Value.ParseSafe() == id
select new Category
{
ID = category.Attribute("id").Value.ParseSafe(),
Parent = category.Attribute("parent").Value.ParseSafe(),
Name = category.Value
};
return cat.SingleOrDefault();
}
您對外部XML有多少控制?您可能需要根據模式對其進行驗證。此外,您的代碼可能爆炸*(要使用技術術語...)*當多個線程嘗試讀取XML時。 – ChaosPandion 2011-02-24 21:52:01
@Chaos - 我無法控制XML文件,所以我必須使用我所擁有的。你能不能解釋一下線程安全部分,聽起來不像我會遇到這種情況,但要確定。謝謝! – Marko 2011-02-25 00:12:30