XmlArrayAttribute.Namespace Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает пространство имен XML-элемента.
public:
property System::String ^ Namespace { System::String ^ get(); void set(System::String ^ value); };
public string Namespace { get; set; }
public string? Namespace { get; set; }
member this.Namespace : string with get, set
Public Property Namespace As String
Значение свойства
Пространство имен XML-элемента.
Примеры
В следующем примере сериализуется экземпляр Library
класса, содержащего два члена, один из них содержит названия книг, а другой — периодические названия. Хотя оба XML-элемента именуются Titles
, каждый из них содержит разные префиксы. В этом примере также содержится экземпляр XmlSerializerNamespaces класса, который содержит пространства имен и префиксы, используемые для определения двух имен элементов.
#using <System.Xml.dll>
#using <System.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public ref class Book
{
public:
String^ Title;
String^ Author;
String^ ISBN;
[XmlAttributeAttribute]
String^ Publisher;
};
public ref class Periodical
{
private:
String^ title;
public:
property String^ Title
{
String^ get()
{
return title;
}
void set( String^ value )
{
title = value;
}
}
};
public ref class Library
{
private:
array<Book^>^books;
array<Periodical^>^periodicals;
public:
/* This element will be qualified with the prefix
that is associated with the namespace http://wwww.cpandl.com. */
[XmlArray(ElementName="Titles",
Namespace="http://wwww.cpandl.com")]
property array<Book^>^ Books
{
array<Book^>^ get()
{
return books;
}
void set( array<Book^>^value )
{
books = value;
}
}
/* This element will be qualified with the prefix that is
associated with the namespace http://www.proseware.com. */
[XmlArray(ElementName="Titles",Namespace=
"http://www.proseware.com")]
property array<Periodical^>^ Periodicals
{
array<Periodical^>^ get()
{
return periodicals;
}
void set( array<Periodical^>^value )
{
periodicals = value;
}
}
};
void WriteBook( String^ filename )
{
// Creates a new XmlSerializer.
XmlSerializer^ mySerializer = gcnew XmlSerializer( Library::typeid );
// Writing the file requires a StreamWriter.
TextWriter^ myStreamWriter = gcnew StreamWriter( filename );
/* Creates an XmlSerializerNamespaces and adds prefixes and
namespaces to be used. */
XmlSerializerNamespaces^ myNamespaces = gcnew XmlSerializerNamespaces;
myNamespaces->Add( "books", "http://wwww.cpandl.com" );
myNamespaces->Add( "magazines", "http://www.proseware.com" );
// Creates an instance of the class to be serialized.
Library^ myLibrary = gcnew Library;
// Creates two book objects.
Book^ b1 = gcnew Book;
b1->Title = "My Book Title";
b1->Author = "An Author";
b1->ISBN = "000000000";
b1->Publisher = "Microsoft Press";
Book^ b2 = gcnew Book;
b2->Title = "Another Book Title";
b2->Author = "Another Author";
b2->ISBN = "00000001";
b2->Publisher = "Another Press";
/* Creates an array using the objects, and sets the Books property
to the array. */
array<Book^>^myBooks = {b1,b2};
myLibrary->Books = myBooks;
// Creates two Periodical objects.
Periodical^ per1 = gcnew Periodical;
per1->Title = "My Magazine Title";
Periodical^ per2 = gcnew Periodical;
per2->Title = "Another Magazine Title";
// Sets the Periodicals property to the array.
array<Periodical^>^myPeridocials = {per1,per2};
myLibrary->Periodicals = myPeridocials;
// Serializes the myLibrary object.
mySerializer->Serialize( myStreamWriter, myLibrary, myNamespaces );
myStreamWriter->Close();
}
void ReadBook( String^ filename )
{
/* Creates an instance of an XmlSerializer
with the class used to read the document. */
XmlSerializer^ mySerializer = gcnew XmlSerializer( Library::typeid );
// A FileStream is needed to read the file.
FileStream^ myFileStream = gcnew FileStream( filename,FileMode::Open );
Library^ myLibrary = dynamic_cast<Library^>(mySerializer->Deserialize( myFileStream ));
// Reads each book in the array returned by the Books property.
for ( int i = 0; i < myLibrary->Books->Length; i++ )
{
Console::WriteLine( myLibrary->Books[ i ]->Title );
Console::WriteLine( myLibrary->Books[ i ]->Author );
Console::WriteLine( myLibrary->Books[ i ]->ISBN );
Console::WriteLine( myLibrary->Books[ i ]->Publisher );
Console::WriteLine();
}
for ( int i = 0; i < myLibrary->Periodicals->Length; i++ )
{
Console::WriteLine( myLibrary->Periodicals[ i ]->Title );
}
}
int main()
{
WriteBook( "MyLibrary.xml" );
ReadBook( "MyLibrary.xml" );
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
public class Library
{
private Book[] books;
private Periodical [] periodicals;
/* This element will be qualified with the prefix
that is associated with the namespace http://wwww.cpandl.com. */
[XmlArray(ElementName = "Titles",
Namespace="http://wwww.cpandl.com")]
public Book[] Books
{
get{return books;}
set{books = value;}
}
/* This element will be qualified with the prefix that is
associated with the namespace http://www.proseware.com. */
[XmlArray(ElementName = "Titles", Namespace =
"http://www.proseware.com")]
public Periodical[] Periodicals
{
get{return periodicals;}
set{periodicals = value;}
}
}
public class Book
{
public string Title;
public string Author;
public string ISBN;
[XmlAttribute]
public string Publisher;
}
public class Periodical
{
private string title;
public string Title
{
get{return title;}
set{title = value;}
}
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.WriteBook("MyLibrary.xml");
test.ReadBook("MyLibrary.xml");
}
public void WriteBook(string filename)
{
// Creates a new XmlSerializer.
XmlSerializer mySerializer = new XmlSerializer(typeof(Library));
// Writing the file requires a StreamWriter.
TextWriter myStreamWriter = new StreamWriter(filename);
/* Creates an XmlSerializerNamespaces and adds prefixes and
namespaces to be used. */
XmlSerializerNamespaces myNamespaces =
new XmlSerializerNamespaces();
myNamespaces.Add("books", "http://wwww.cpandl.com");
myNamespaces.Add("magazines", "http://www.proseware.com");
// Creates an instance of the class to be serialized.
Library myLibrary = new Library();
// Creates two book objects.
Book b1 = new Book();
b1.Title = "My Book Title";
b1.Author = "An Author";
b1.ISBN = "000000000";
b1.Publisher = "Microsoft Press";
Book b2 = new Book();
b2.Title = "Another Book Title";
b2.Author = "Another Author";
b2.ISBN = "00000001";
b2.Publisher = "Another Press";
/* Creates an array using the objects, and sets the Books property
to the array. */
Book[] myBooks = {b1,b2};
myLibrary.Books = myBooks;
// Creates two Periodical objects.
Periodical per1 = new Periodical();
per1.Title = "My Magazine Title";
Periodical per2 = new Periodical();
per2.Title = "Another Magazine Title";
// Sets the Periodicals property to the array.
Periodical[] myPeridocials = {per1, per2};
myLibrary.Periodicals = myPeridocials;
// Serializes the myLibrary object.
mySerializer.Serialize(myStreamWriter, myLibrary, myNamespaces);
myStreamWriter.Close();
}
public void ReadBook(string filename)
{
/* Creates an instance of an XmlSerializer
with the class used to read the document. */
XmlSerializer mySerializer = new XmlSerializer(typeof(Library));
// A FileStream is needed to read the file.
FileStream myFileStream = new FileStream(filename, FileMode.Open);
Library myLibrary = (Library) mySerializer.Deserialize(myFileStream);
// Reads each book in the array returned by the Books property.
for(int i = 0; i< myLibrary.Books.Length;i++)
{
Console.WriteLine(myLibrary.Books[i].Title);
Console.WriteLine(myLibrary.Books[i].Author);
Console.WriteLine(myLibrary.Books[i].ISBN);
Console.WriteLine(myLibrary.Books[i].Publisher);
Console.WriteLine();
}
// Reads each Periodical returned by the Periodicals property.
for(int i = 0; i< myLibrary.Periodicals.Length;i++)
{
Console.WriteLine(myLibrary.Periodicals[i].Title);
}
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Public Class Library
Private myBooks() As Book
Private myPeriodicals() As Periodical
' This element will be qualified with the prefix
' that is associated with the namespace http://wwww.cpandl.com.
<XmlArray(ElementName := "Titles", _
Namespace := "http://wwww.cpandl.com")> _
Public Property Books() As Book()
Get
Return myBooks
End Get
Set
myBooks = value
End Set
End Property
' This element will be qualified with the prefix that is
' associated with the namespace http://www.proseware.com.
<XmlArray(ElementName := "Titles", _
Namespace := "http://www.proseware.com")> _
Public Property Periodicals() As Periodical()
Get
Return myPeriodicals
End Get
Set
myPeriodicals = value
End Set
End Property
End Class
Public Class Book
Public Title As String
Public Author As String
Public ISBN As String
<XmlAttribute()> Public Publisher As String
End Class
Public Class Periodical
Private myTitle As String
Public Property Title() As String
Get
Return myTitle
End Get
Set
myTitle = value
End Set
End Property
End Class
Public Class Run
Public Shared Sub Main()
Dim test As New Run()
test.WriteBook("MyLibrary.xml")
test.ReadBook("MyLibrary.xml")
End Sub
Public Sub WriteBook(ByVal filename As String)
' Creates a new XmlSerializer.
Dim mySerializer As New XmlSerializer(GetType(Library))
' Writing the file requires a StreamWriter.
Dim myStreamWriter As New StreamWriter(filename)
' Creates an XmlSerializerNamespaces and adds prefixes and
' namespaces to be used.
Dim myNamespaces As New XmlSerializerNamespaces()
myNamespaces.Add("books", "http://wwww.cpandl.com")
myNamespaces.Add("magazines", "http://www.proseware.com")
' Create an instance of the class to be serialized.
Dim myLibrary As New Library()
' Creates two book objects.
Dim b1 As New Book()
b1.Title = "My Book Title"
b1.Author = "An Author"
b1.ISBN = "000000000"
b1.Publisher = "Microsoft Press"
Dim b2 As New Book()
b2.Title = "Another Book Title"
b2.Author = "Another Author"
b2.ISBN = "00000001"
b2.Publisher = "Another Press"
' Creates an array using the objects, and sets the Books property
' to the array.
Dim myBooks As Book() = {b1, b2}
myLibrary.Books = myBooks
' Creates two Periodical objects.
Dim per1 As New Periodical()
per1.Title = "My Magazine Title"
Dim per2 As New Periodical()
per2.Title = "Another Magazine Title"
' Sets the Periodicals property to the array.
Dim myPeriodicals() As Periodical = {per1, per2}
myLibrary.Periodicals = myPeriodicals
' Serializes the myLibrary object.
mySerializer.Serialize(myStreamWriter, myLibrary, myNamespaces)
myStreamWriter.Close()
End Sub
Public Sub ReadBook(ByVal filename As String)
' Creates an instance of an XmlSerializer
' with the class used to read the document.
Dim mySerializer As New XmlSerializer(GetType(Library))
' A FileStream is needed to read the file.
Dim myFileStream As New FileStream(filename, FileMode.Open)
Dim myLibrary As Library = _
CType(mySerializer.Deserialize(myFileStream), Library)
' Reads each book in the array returned by the Books property.
Dim i As Integer
For i = 0 To myLibrary.Books.Length - 1
Console.WriteLine(myLibrary.Books(i).Title)
Console.WriteLine(myLibrary.Books(i).Author)
Console.WriteLine(myLibrary.Books(i).ISBN)
Console.WriteLine(myLibrary.Books(i).Publisher)
Console.WriteLine()
Next i
' Reads each Periodical returned by the Periodicals property.
For i = 0 To myLibrary.Periodicals.Length - 1
Console.WriteLine(myLibrary.Periodicals(i).Title)
Next i
End Sub
End Class
Комментарии
Свойство Namespace позволяет создавать полные имена ЭЛЕМЕНТОВ XML. Свойство Namespace соответствует правилам создания пространства имен XML, как описано в документе консорциума World Wide Web Consortium 1999 года под названием "Пространства имен" в XML.
Чтобы создать пространства имен, связанные с префиксом, необходимо создать экземпляр XmlSerializerNamespaces класса, который содержит пространства имен и префиксы, используемые в XML-документе. При установке пространства имен для каждого XmlArrayAttributeиз них оно должно соответствовать одному из пространств имен в .XmlSerializerNamespaces При создании XML каждый массив правильно имеет префикс, связанный с указанным пространством имен.