要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

如何:限定 XML 元素和 XML 属性名

代码示例

XmlSerializerNamespaces 类的实例所包含的 XML 命名空间必须符合万维网联合会 (www.w3.org) 规范“XML 中的命名空间”(Namespaces in XML)。

XML 命名空间提供了一种方法,用来限定 XML 文档中 XML 元素和 XML 特性的名称。 限定名由前缀和本地名称组成,两者之间用冒号分隔。 前缀仅用作占位符;它将映射到用于指定命名空间的 URI。 统一管理的 URI 命名空间和本地名称的组合能够产生保证为全局唯一的名称。

通过创建 XmlSerializerNamespaces 的实例,并向对象中添加命名空间对,可以指定在 XML 文档中使用的前缀。

在 XML 文档中创建限定名称

  1. 创建 XmlSerializerNamespaces 类的一个实例。

  2. 将所有的前缀和命名空间对添加至 XmlSerializerNamespaces

  3. 对每个由 XmlSerializer 序列化为 XML 文档的成员或类应用相应的 System.Xml.Serialization 特性。

    可用的特性包括:XmlAnyElementAttributeXmlArrayAttributeXmlArrayItemAttributeXmlAttributeAttributeXmlElementAttributeXmlRootAttributeXmlTypeAttribute

  4. 将每个属性 (Attribute) 的 Namespace 属性 (Property) 设置为 XmlSerializerNamespaces 的命名空间值之一。

  5. XmlSerializerNamespaces 传递到 XmlSerializerSerialize 方法。

下面的示例创建一个 XmlSerializerNamespaces,并向对象添加两个前缀和命名空间对。 该代码创建了用来序列化 Books 类实例的 XmlSerializer 并通过 XmlSerializerNamespaces 调用 Serialize 方法,使 XML 可以包含带前缀的命名空间。

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
    
public class Run
{
    public static void Main()
    {
        Run test = new Run();
        test.SerializeObject("XmlNamespaces.xml");
    }
    public void SerializeObject(string filename)
    {
        XmlSerializer 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.
        XmlSerializerNamespaces myNamespaces = 
        new XmlSerializerNamespaces();
        myNamespaces.Add("books", "http://www.cpandl.com");
        myNamespaces.Add("money", "http://www.cohowinery.com");

        // Creates a Book.
        Book myBook = new Book();
        myBook.TITLE = "A Book Title";
        Price myPrice = new Price();
        myPrice.price = (decimal) 9.95;
        myPrice.currency = "US Dollar";
        myBook.PRICE = myPrice;
        Books 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;
}

社区附加资源

显示: