[英]How to create xml document as a property in c#.net
我想將 xml 文檔設置為屬性,用戶可以在其中設置 xml 屬性和標簽的值,但不能更改 xml 格式。 不允許用戶在該 xml 中刪除或添加任何節點。
任何機構都可以幫助我擺脫這種情況嗎?
有幾種方法可以做到這一點。 如果 xml 文檔中包含的數據可以轉換為可序列化的類(所有屬性的默認構造函數、getter 和 setter - 因為數據無論如何都是 xml,所以它可能是簡單的可序列化的),您可以簡單地公開文檔,如下所示:
[Serializable]
public class MyDocument
{
[XmlElement(IsNullable = False)]
public int Property1 { get; set }
[XmlArray(IsNullable= False)]
public List<string> Property2 { get; set; }
}
這允許您使用 XmlSerializer 類將文檔加載和保存到磁盤、IO 流等,而無需直接與 Xml DOM 交互。 將 IsNullable 設置為 false 意味着在發生序列化時,將始終生成一個節點,或者拋出異常。
否則,您可以圍繞文檔創建一個包裝器,如下所示:
public class MyDocument
{
private XDocument the_document = null;
public string Property1
{
get
{
return this.the_document... //getter DOM manipulation here
}
set
{
if(value == null)
throw new ArgumentNullException(nameof(value));
this.the_document... = value //setter DOM manipulation here
}
}
}
無論哪種方式,您的目標都是對用戶隱藏 XML 文檔的靈活性,並使用您編寫的訪問器類來操作您想要更改的元素。
如果文檔有 xsd,您的任務會更容易 - xsd.exe 將允許您從給定的 xsd 架構自動生成可序列化的 C# 類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.