閱讀英文

共用方式為


如何限定 XML 元素和 XML 屬性名稱

XmlSerializerNamespaces 類別執行個體所包含的 XML 命名空間,必須符合稱為 XML 中的命名空間 的全球資訊網協會 (W3C) 規格。

XML 命名空間提供限定 XML 文件中 XML 項目和 XML 屬性名稱的方法。 限定名稱 (Qualified Name) 是由前置詞和本機名稱所組成,並以半形冒號 (:) 隔開。 前置詞的作用只是個替代符號 (Placeholder),它會對應到指定命名空間的 URI。 通用管理的 URI 命名空間和本機名稱的組合會產生保證是通用唯一的名稱。

藉由建立 XmlSerializerNamespaces 執行個體以及將命名空間配對加入物件中,您可指定 XML 文件使用的前置詞。

若要在 XML 文件中建立限定名稱

  1. 建立 XmlSerializerNamespaces 類別的執行個體。

  2. 加入所有前置詞與命名空間配對至 XmlSerializerNamespaces

  3. 套用適當的 System.Xml.Serialization 屬性至 XmlSerializer 將要序列化至 XML 文件的每個成員或類別。

    可用的屬性為:XmlAnyElementAttributeXmlArrayAttributeXmlArrayItemAttributeXmlAttributeAttributeXmlElementAttributeXmlRootAttributeXmlTypeAttribute

  4. 將每個屬性 (Attribute) 的 Namespace 屬性 (Property) 設定為 XmlSerializerNamespaces 的其中一個命名空間值。

  5. 傳遞 XmlSerializerNamespacesSerializeXmlSerializer 方法。

範例

下列範例建立 XmlSerializerNamespaces,並在物件加入兩個前置詞和命名空間配對。 程式碼建立用來系列化 XmlSerializer 類別執行個體的 Books。 程式碼以 SerializeXmlSerializerNamespaces呼叫 方法,讓 XML 能包含有前置詞的命名空間。

C#
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public class Program
{
    public static void Main()
    {
        SerializeObject("XmlNamespaces.xml");
    }

    public static void SerializeObject(string filename)
    {
        var mySerializer = new XmlSerializer(typeof(Books));
        // Writing a file requires a TextWriter.
        TextWriter myWriter = new StreamWriter(filename);

        // Creates an XmlSerializerNamespaces and adds two
        // prefix-namespace pairs.
        var myNamespaces = new XmlSerializerNamespaces();
        myNamespaces.Add("books", "http://www.cpandl.com");
        myNamespaces.Add("money", "http://www.cohowinery.com");

        // Creates a Book.
        var myBook = new Book();
        myBook.TITLE = "A Book Title";
        var myPrice = new Price();
        myPrice.price = (decimal) 9.95;
        myPrice.currency = "US Dollar";
        myBook.PRICE = myPrice;
        var myBooks = new Books();
        myBooks.Book = myBook;
        mySerializer.Serialize(myWriter, myBooks, myNamespaces);
        myWriter.Close();
    }
}

public class Books
{
    [XmlElement(Namespace = "http://www.cohowinery.com")]
    public Book Book;
}

[XmlType(Namespace ="http://www.cpandl.com")]
public class Book
{
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public string TITLE;
    [XmlElement(Namespace ="http://www.cohowinery.com")]
    public Price PRICE;
}

public class Price
{
    [XmlAttribute(Namespace = "http://www.cpandl.com")]
    public string currency;
    [XmlElement(Namespace = "http://www.cohowinery.com")]
    public decimal price;
}

另請參閱


其他資源

訓練

模組

儲存和擷取 JSON 檔案 - Training

瞭解如何使用 JsonSerializer 類別、JsonSerializerOptions 類別和數據傳輸物件,串行化和還原串行化 JavaScript 物件表示法 (JSON) 字串。