XmlAnyElementAttributes Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет коллекцию объектов XmlAnyElementAttribute.
public ref class XmlAnyElementAttributes : System::Collections::IList
public ref class XmlAnyElementAttributes : System::Collections::CollectionBase
public class XmlAnyElementAttributes : System.Collections.IList
public class XmlAnyElementAttributes : System.Collections.CollectionBase
type XmlAnyElementAttributes = class
interface ICollection
interface IEnumerable
interface IList
type XmlAnyElementAttributes = class
inherit CollectionBase
Public Class XmlAnyElementAttributes
Implements IList
Public Class XmlAnyElementAttributes
Inherits CollectionBase
- Наследование
-
XmlAnyElementAttributes
- Наследование
- Реализации
Примеры
В следующем примере создается новый XmlAnyElementAttribute объект и добавляется в коллекцию объектов, к ним обращаются XmlAnyElements через свойство. Затем XmlAttributes добавляется в объект, XmlAttributeOverrides который используется для создания XmlSerializer. Используется XmlSerializer для сериализации или десериализации объекта. Чтобы увидеть эффект использования XmlAnyElementAttributes свойства, создайте XML-документ с именем UnknownElements.xml, запустив SerializeObject
метод в методе Main
. Измените полученный документ, чтобы включить другие (неизвестные) элементы. SerializeObject
Закомментируйте вызов в методе Main
и раскомментируйте вызов DeserializeObject
метода, который выводит имя и значение любого неизвестного XML-элемента.
#using <System.dll>
#using <System.xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public ref class Group
{
public:
String^ GroupName;
[XmlAnyElement]
array<Object^>^Things;
};
void SerializeObject( String^ filename );
void DeserializeObject( String^ filename );
XmlSerializer^ CreateOverrideSerializer();
int main()
{
// 1 Run this and create the XML document.
// 2 Add new elements to the XML document.
// 3 Comment out the next line, and uncomment
// the DeserializeObject line to deserialize the
// XML document and see unknown elements.
SerializeObject( "UnknownElements.xml" );
// DeserializeObject(S"UnknownElements.xml");
}
void SerializeObject( String^ filename )
{
XmlSerializer^ ser = gcnew XmlSerializer( Group::typeid );
TextWriter^ writer = gcnew StreamWriter( filename );
Group^ g = gcnew Group;
g->GroupName = "MyGroup";
ser->Serialize( writer, g );
writer->Close();
}
void DeserializeObject( String^ filename )
{
XmlSerializer^ ser = CreateOverrideSerializer();
// A FileStream is needed to read the XML document.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
Group^ g = safe_cast<Group^>(ser->Deserialize( fs ));
fs->Close();
Console::WriteLine( g->GroupName );
Console::WriteLine( g->Things->Length );
for ( int i = 0; i < g->Things->Length; ++i )
{
XmlElement^ xelement = safe_cast<XmlElement^>(g->Things[ i ]);
Console::WriteLine( "{0}: {1}", xelement->Name, xelement->InnerXml );
}
}
XmlSerializer^ CreateOverrideSerializer()
{
XmlAnyElementAttribute^ myAnyElement = gcnew XmlAnyElementAttribute;
XmlAttributeOverrides^ xOverride = gcnew XmlAttributeOverrides;
XmlAttributes^ xAtts = gcnew XmlAttributes;
xAtts->XmlAnyElements->Add( myAnyElement );
xOverride->Add( Group::typeid, "Things", xAtts );
return gcnew XmlSerializer( Group::typeid,xOverride );
}
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Group{
public string GroupName;
[XmlAnyElement]
public object[]Things;
}
public class Test{
static void Main(){
Test t = new Test();
// 1 Run this and create the XML document.
// 2 Add new elements to the XML document.
// 3 Comment out the new line, and uncomment
// the DeserializeObject line to deserialize the
// XML document and see unknown elements.
t.SerializeObject("UnknownElements.xml");
// t.DeserializeObject("UnknownElements.xml");
}
private void SerializeObject(string filename){
XmlSerializer ser = new XmlSerializer(typeof (Group));
TextWriter writer = new StreamWriter(filename);
Group g = new Group();
g.GroupName = "MyGroup";
ser.Serialize(writer, g);
writer.Close();
}
private void DeserializeObject(string filename){
XmlSerializer ser = CreateOverrideSerializer();
// A FileStream is needed to read the XML document.
FileStream fs = new FileStream(filename, FileMode.Open);
Group g = (Group)
ser.Deserialize(fs);
fs.Close();
Console.WriteLine(g.GroupName);
Console.WriteLine(g.Things.Length);
foreach(XmlElement xelement in g.Things){
Console.WriteLine(xelement.Name + ": " + xelement.InnerXml);
}
}
private XmlSerializer CreateOverrideSerializer(){
XmlAnyElementAttribute myAnyElement =
new XmlAnyElementAttribute();
XmlAttributeOverrides xOverride =
new XmlAttributeOverrides();
XmlAttributes xAtts = new XmlAttributes();
xAtts.XmlAnyElements.Add(myAnyElement);
xOverride.Add(typeof(Group), "Things", xAtts);
return new XmlSerializer(typeof(Group) , xOverride);
}
}
Imports System.IO
Imports System.Xml.Serialization
Imports System.Xml
Public Class Group
Public GroupName As String
<XmlAnyElement> _
Public Things () As object
End Class
Public Class Test
Shared Sub Main()
Dim t As Test = New Test()
' 1 Run this and create the XML document.
' 2 Add New elements to the XML document.
' 3 Comment out the New line, and uncomment
' the DeserializeObject line to deserialize the
' XML document and see unknown elements.
t.SerializeObject("UnknownElements.xml")
't.DeserializeObject("UnknownElements.xml")
End Sub
Private Sub SerializeObject(filename As String)
Dim ser As XmlSerializer = New XmlSerializer(GetType (Group))
Dim writer As TextWriter = New StreamWriter(filename)
Dim g As Group = New Group()
g.GroupName = "MyGroup"
ser.Serialize(writer, g)
writer.Close()
End Sub
Private Sub DeserializeObject(filename As String)
Dim ser As XmlSerializer = CreateOverrideSerializer()
' A FileStream is needed to read the XML document.
Dim fs As FileStream = New FileStream(filename, FileMode.Open)
Dim g As Group = CType( _
ser.Deserialize(fs), Group)
fs.Close()
Console.WriteLine(g.GroupName)
Console.WriteLine(g.Things.Length)
Dim xelement As XmlELement
for each xelement in g.Things
Console.WriteLine(xelement.Name &": " & xelement.InnerXml)
next
End Sub
Private Function CreateOverrideSerializer() As XmlSerializer
Dim myAnyElement As XmlAnyElementAttribute = _
New XmlAnyElementAttribute()
Dim xOverride As XmlAttributeOverrides = _
New XmlAttributeOverrides()
Dim xAtts As XmlAttributes = New XmlAttributes()
xAtts.XmlAnyElements.Add(myAnyElement)
xOverride.Add(GetType(Group), "Things", xAtts)
return New XmlSerializer(GetType(Group) , xOverride)
End Function
End Class
Комментарии
XmlAnyElementAttributes Используйте для переопределения поведения набора XmlAnyElementAttribute объектов. Несколько экземпляров XmlAnyElementAttribute класса могут применяться к члену класса, если каждый экземпляр имеет отдельное Name значение свойства. Это указывает XmlSerializer собирать неизвестные элементы под именованным элементом в соответствующий массив. Именно по этой причине в него можно добавить XmlAnyElementAttributesнесколько экземпляров XmlAnyElementAttribute класса.
Чтобы переопределить набор XmlAnyElementAttribute объектов, выполните указанные далее действия.
XmlAnyElementAttributesСоздайте .
Создайте набор XmlAnyElementAttribute объектов и добавьте каждый объект в коллекцию с помощью Add метода.
XmlAttributesСоздайте .
Присвойте XmlAnyElements свойству XmlAnyElementAttributesзначение .
XmlAttributeOverridesСоздайте .
Добавьте его XmlAttributes в XmlAttributeOverrides метод.Add
Создание экземпляра XmlSerializer с помощью .XmlAttributeOverrides
Сериализация или десериализация объекта, содержащего набор XmlAnyElementAttribute объектов.
Конструкторы
XmlAnyElementAttributes() |
Инициализирует новый экземпляр класса XmlAnyElementAttributes. |
Свойства
Capacity |
Возвращает или задает число элементов, которое может содержать список CollectionBase. (Унаследовано от CollectionBase) |
Count |
Получает число элементов, содержащихся в интерфейсе ICollection. |
Count |
Возвращает количество элементов, содержащихся в экземпляре CollectionBase. Это свойство нельзя переопределить. (Унаследовано от CollectionBase) |
InnerList |
Возвращает объект ArrayList, в котором хранится список элементов экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
Item[Int32] |
Возвращает или задает объект XmlAnyElementAttribute с заданным индексом. |
List |
Возвращает объект IList, в котором хранится список элементов экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
Методы
Add(XmlAnyElementAttribute) |
Добавляет в коллекцию объект XmlAnyElementAttribute. |
Clear() |
Удаляет все элементы из коллекции IList. |
Clear() |
Удаляет все объекты из экземпляра класса CollectionBase. Этот метод не может быть переопределен. (Унаследовано от CollectionBase) |
Contains(XmlAnyElementAttribute) |
Получает значение, которое указывает, содержится ли заданный объект XmlAnyElementAttribute в коллекции. |
CopyTo(XmlAnyElementAttribute[], Int32) |
Копирует коллекцию целиком в совместимый одномерный массив объектов XmlElementAttribute, начиная с заданного индекса целевого массива. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetEnumerator() |
Возвращает перечислитель, который осуществляет итерацию по коллекции. |
GetEnumerator() |
Возвращает перечислитель, перебирающий элементы экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
IndexOf(XmlAnyElementAttribute) |
Получает индекс заданного ограничения XmlAnyElementAttribute. |
Insert(Int32, XmlAnyElementAttribute) |
Вставляет в коллекцию объект XmlAnyElementAttribute по указанному индексу. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
OnClear() |
Выполняет дополнительные пользовательские действия при очистке содержимого экземпляра CollectionBase. (Унаследовано от CollectionBase) |
OnClearComplete() |
Осуществляет дополнительные пользовательские действия после удаления содержимого экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
OnInsert(Int32, Object) |
Выполняет дополнительные пользовательские действия перед вставкой нового элемента в экземпляр класса CollectionBase. (Унаследовано от CollectionBase) |
OnInsertComplete(Int32, Object) |
Выполняет дополнительные пользовательские действия после вставки нового элемента в экземпляр класса CollectionBase. (Унаследовано от CollectionBase) |
OnRemove(Int32, Object) |
Осуществляет дополнительные пользовательские действия при удалении элемента из экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
OnRemoveComplete(Int32, Object) |
Осуществляет дополнительные пользовательские действия после удаления элемента из экземпляра класса CollectionBase. (Унаследовано от CollectionBase) |
OnSet(Int32, Object, Object) |
Выполняет дополнительные пользовательские действия перед заданием значения в экземпляре класса CollectionBase. (Унаследовано от CollectionBase) |
OnSetComplete(Int32, Object, Object) |
Выполняет дополнительные пользовательские действия после задания значения в экземпляре класса CollectionBase. (Унаследовано от CollectionBase) |
OnValidate(Object) |
Выполняет дополнительные пользовательские операции при проверке значения. (Унаследовано от CollectionBase) |
Remove(XmlAnyElementAttribute) |
Удаляет указанный объект XmlAnyElementAttribute из коллекции. |
RemoveAt(Int32) |
Удаляет элемент IList по указанному индексу. |
RemoveAt(Int32) |
Удаляет элемент по указанному индексу в экземпляре класса CollectionBase. Этот метод нельзя переопределить. (Унаследовано от CollectionBase) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
ICollection.CopyTo(Array, Int32) |
Копирует элементы коллекции ICollection в массив, начиная с определенного индекса. |
ICollection.CopyTo(Array, Int32) |
Копирует целый массив CollectionBase в совместимый одномерный массив Array, начиная с заданного индекса целевого массива. (Унаследовано от CollectionBase) |
ICollection.IsSynchronized |
Возвращает значение, показывающее, является ли доступ к коллекции ICollection синхронизированным (потокобезопасным). |
ICollection.IsSynchronized |
Возвращает значение, показывающее, является ли доступ к коллекции CollectionBase синхронизированным (потокобезопасным). (Унаследовано от CollectionBase) |
ICollection.SyncRoot |
Получает объект, с помощью которого можно синхронизировать доступ к коллекции ICollection. |
ICollection.SyncRoot |
Получает объект, с помощью которого можно синхронизировать доступ к коллекции CollectionBase. (Унаследовано от CollectionBase) |
IList.Add(Object) |
Добавляет элемент в коллекцию IList. |
IList.Add(Object) |
Добавляет объект в конец коллекции CollectionBase. (Унаследовано от CollectionBase) |
IList.Contains(Object) |
Определяет, содержит ли коллекция IList указанное значение. |
IList.Contains(Object) |
Определяет, содержит ли интерфейс CollectionBase определенный элемент. (Унаследовано от CollectionBase) |
IList.IndexOf(Object) |
Определяет индекс заданного элемента коллекции IList. |
IList.IndexOf(Object) |
Осуществляет поиск указанного объекта Object и возвращает отсчитываемый от нуля индекс первого вхождения в коллекцию CollectionBase. (Унаследовано от CollectionBase) |
IList.Insert(Int32, Object) |
Вставляет элемент в список IList по указанному индексу. |
IList.Insert(Int32, Object) |
Вставляет элемент в коллекцию CollectionBase по указанному индексу. (Унаследовано от CollectionBase) |
IList.IsFixedSize |
Получает значение, указывающее, имеет ли список IList фиксированный размер. |
IList.IsFixedSize |
Получает значение, указывающее, имеет ли список CollectionBase фиксированный размер. (Унаследовано от CollectionBase) |
IList.IsReadOnly |
Получает значение, указывающее, является ли объект IList доступным только для чтения. |
IList.IsReadOnly |
Получает значение, указывающее, является ли объект CollectionBase доступным только для чтения. (Унаследовано от CollectionBase) |
IList.Item[Int32] |
Возвращает или задает элемент по указанному индексу. |
IList.Item[Int32] |
Возвращает или задает элемент по указанному индексу. (Унаследовано от CollectionBase) |
IList.Remove(Object) |
Удаляет первое вхождение указанного объекта из коллекции IList. |
IList.Remove(Object) |
Удаляет первое вхождение указанного объекта из коллекции CollectionBase. (Унаследовано от CollectionBase) |
Методы расширения
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |