簡體   English   中英

如何在 c#.net 中創建 xml 文檔作為屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM