XmlAttributes.Xmlns 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指定在包含返回对象的成员 XmlSerializerNamespaces 的对象被重写时是否保留所有命名空间声明。
public:
property bool Xmlns { bool get(); void set(bool value); };
public bool Xmlns { get; set; }
member this.Xmlns : bool with get, set
Public Property Xmlns As Boolean
属性值
true 如果应保留命名空间声明,则为 ;否则,为 false.
示例
下面的示例包含一个名为 Student.. 该类包含一 MyNamespaces 个名为返回对象 XmlSerializerNamespaces 的成员。 该示例创建一个 XmlAttributes 添加到类实例 XmlAttributeOverrides 的对象。 属性 Xmlns 设置为 true,指示 XmlSerializer 在重写对象的序列化 Student 时保留命名空间。
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Student
{
[XmlAttributeAttribute]
public string Name;
[XmlNamespaceDeclarationsAttribute]
public XmlSerializerNamespaces myNamespaces;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeStudent("Student.xml");
test.DeserializeStudent("Student.xml");
}
public void SerializeStudent(string filename)
{
XmlAttributes atts = new XmlAttributes();
// Set to true to preserve namespaces,
// or false to ignore them.
atts.Xmlns=true;
XmlAttributeOverrides xover = new XmlAttributeOverrides();
// Add the XmlAttributes and specify the name of the element
// containing namespaces.
xover.Add(typeof(Student),"myNamespaces", atts);
// Create the XmlSerializer using the
// XmlAttributeOverrides object.
XmlSerializer xser = new XmlSerializer(typeof (Student),xover);
Student myStudent = new Student();
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("myns1", "http://www.cpandl.com");
ns.Add("myns2", "http://www.cohowinery.com");
myStudent.myNamespaces= ns;
myStudent.Name= "Student1";
FileStream fs = new FileStream(filename,FileMode.Create);
xser.Serialize(fs,myStudent);
fs.Close();
}
private void DeserializeStudent(string filename)
{
XmlAttributes atts = new XmlAttributes();
// Set to true to preserve namespaces, or false to ignore them.
atts.Xmlns=true;
XmlAttributeOverrides xover = new XmlAttributeOverrides();
// Add the XmlAttributes and specify the name of the
// element containing namespaces.
xover.Add(typeof(Student),"myNamespaces", atts);
// Create the XmlSerializer using the
// XmlAttributeOverrides object.
XmlSerializer xser =
new XmlSerializer(typeof (Student),xover);
FileStream fs = new FileStream(filename,FileMode.Open);
Student myStudent;
myStudent= (Student) xser.Deserialize(fs);
fs.Close();
// Use the ToArray method to get an array of
// XmlQualifiedName objects.
XmlQualifiedName[] qNames= myStudent.myNamespaces.ToArray();
for(int i = 0; i < qNames.Length;i++)
{
Console.WriteLine("{0}:{1}",
qNames[i].Name,qNames[i].Namespace);
}
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Public Class Student
<XmlAttributeAttribute()> _
Public Name As String
<XmlNamespaceDeclarationsAttribute()> _
Public myNamespaces As XmlSerializerNamespaces
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.SerializeStudent("Student_v.xml")
test.DeserializeStudent("Student_v.xml")
End Sub
Public Sub SerializeStudent(filename As String)
Dim atts As New XmlAttributes()
' Set to true to preserve namespaces, or false to ignore them.
atts.Xmlns = True
Dim xover As New XmlAttributeOverrides()
' Add the XmlAttributes and specify the name of
' the element containing namespaces.
xover.Add(GetType(Student), "myNamespaces", atts)
' Create the XmlSerializer using the
' XmlAttributeOverrides object.
Dim xser As New XmlSerializer(GetType(Student), xover)
Dim myStudent As New Student()
Dim ns As New XmlSerializerNamespaces()
ns.Add("myns1", "http://www.cpandl.com")
ns.Add("myns2", "http://www.cohowinery.com")
myStudent.myNamespaces = ns
myStudent.Name = "Student1"
Dim fs As New FileStream(filename, FileMode.Create)
xser.Serialize(fs, myStudent)
fs.Close()
End Sub
Private Sub DeserializeStudent(filename As String)
Dim atts As New XmlAttributes()
' Set to true to preserve namespaces, or false to ignore them.
atts.Xmlns = True
Dim xover As New XmlAttributeOverrides()
' Add the XmlAttributes and specify the name
' of the element containing namespaces.
xover.Add(GetType(Student), "myNamespaces", atts)
' Create the XmlSerializer using the
' XmlAttributeOverrides object.
Dim xser As New XmlSerializer(GetType(Student), xover)
Dim fs As New FileStream(filename, FileMode.Open)
Dim myStudent As Student
myStudent = CType(xser.Deserialize(fs), Student)
fs.Close()
' Use the ToArray method to get an array
' of XmlQualifiedName objects.
Dim qNames As XmlQualifiedName() = _
myStudent.myNamespaces.ToArray()
Dim i As Integer
For i = 0 To qNames.Length - 1
Console.WriteLine("{0}:{1}", _
qNames(i).Name, qNames(i).Namespace)
Next i
End Sub
End Class