XmlAnyElementAttribute 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指定成员(返回 XmlElement 或 XmlNode 对象的数组的字段)可以包含对象,该对象表示在序列化或反序列化的对象中没有相应成员的所有 XML 元素。
public ref class XmlAnyElementAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)]
public class XmlAnyElementAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=true)>]
type XmlAnyElementAttribute = class
inherit Attribute
Public Class XmlAnyElementAttribute
Inherits Attribute
- 继承
- 属性
示例
以下示例将 应用于 XmlAnyElementAttribute 返回 对象数组的名为 AllElements
的 XmlElement 字段。
public ref class XClass
{
public:
/* Apply the XmlAnyElementAttribute to a field returning an array
of XmlElement objects. */
[XmlAnyElement]
array<XmlElement^>^AllElements;
};
public ref class Test
{
public:
void DeserializeObject( String^ filename )
{
// Create an XmlSerializer.
XmlSerializer^ mySerializer = gcnew XmlSerializer( XClass::typeid );
// To read a file, a FileStream is needed.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
// Deserialize the class.
XClass^ x = dynamic_cast<XClass^>(mySerializer->Deserialize( fs ));
// Read the element names and values.
System::Collections::IEnumerator^ myEnum = x->AllElements->GetEnumerator();
while ( myEnum->MoveNext() )
{
XmlElement^ xel = safe_cast<XmlElement^>(myEnum->Current);
Console::WriteLine( "{0}: {1}", xel->LocalName, xel->Value );
}
}
};
int main()
{
Test^ t = gcnew Test;
t->DeserializeObject( "XFile.xml" );
}
public class XClass
{
/* Apply the XmlAnyElementAttribute to a field returning an array
of XmlElement objects. */
[XmlAnyElement]
public XmlElement[] AllElements;
}
public class Test
{
public static void Main()
{
Test t = new Test();
t.DeserializeObject("XFile.xml");
}
private void DeserializeObject(string filename)
{
// Create an XmlSerializer.
XmlSerializer mySerializer = new XmlSerializer(typeof(XClass));
// To read a file, a FileStream is needed.
FileStream fs = new FileStream(filename, FileMode.Open);
// Deserialize the class.
XClass x = (XClass) mySerializer.Deserialize(fs);
// Read the element names and values.
foreach(XmlElement xel in x.AllElements)
Console.WriteLine(xel.LocalName + ": " + xel.Value);
}
}
Public Class XClass
' Apply the XmlAnyElementAttribute to a field returning an array
' of XmlElement objects.
<XmlAnyElement()> Public AllElements() As XmlElement
End Class
Public Class Test
Public Shared Sub Main()
Dim t As New Test()
t.DeserializeObject("XFile.xml")
End Sub
Private Sub DeserializeObject(filename As String)
' Create an XmlSerializer.
Dim mySerializer As New XmlSerializer(GetType(XClass))
' To read a file, a FileStream is needed.
Dim fs As New FileStream(filename, FileMode.Open)
' Deserialize the class.
Dim x As XClass = CType(mySerializer.Deserialize(fs), XClass)
' Read the element names and values.
Dim xel As XmlElement
For Each xel In x.AllElements
Console.WriteLine((xel.LocalName & ": " & xel.Value))
Next xel
End Sub
End Class
注解
提示
在可移植类库(如 Silverlight、Windows Phone 或 Windows 应用商店应用项目中)中工作时,并且使用 .NET Framework 4.0.3 及更高版本时,请使用 XElement 或 XNode 代替 XmlElement 和 XmlNode。
XmlAnyElementAttribute使用 包含任意数据 (作为 XML 元素) ,这些元素可作为 XML 文档的一部分发送,例如作为文档的一部分发送的元数据。
将 XmlAnyElementAttribute 应用于返回 或 XmlNode 对象的数组的XmlElement字段。 此类字段可通过两种方式使用,具体取决于对象是序列化还是反序列化对象。 序列化后,对象将生成为 XML 元素或节点,即使它们没有相应的成员 (或正在序列化的对象中) 成员。 如果在应用特性时指定 Name 属性值,则插入数组中的所有 XmlElement 或 XmlNode 对象必须具有相同的元素名称和默认命名空间,否则将引发异常。 如果设置 Namespace 属性值,还必须设置 Name 属性,并且 XmlElement 或 XmlNode 对象还必须具有相同的名称和命名空间值。 如果未 Name 指定任何值,则 XmlElement 或 XmlNode 对象可以具有任何元素名称。
调用 Deserialize 类的 XmlSerializer 方法时,将在数组中收集正在反序列化的对象中没有相应成员的所有元素。 反序列化后,循环访问项集合 XmlElement 以处理数据。 如果指定值 Name ,则数组仅包含具有该名称的 XML 元素。 如果不指定 Name 值,则数组包含类中没有相应成员的所有元素。 如果类包含多个应用了 特性的字段,请使用 Name、 或 Name 和 Namespace 属性来区分数组的内容。 如果此类 (具有多个字段) 还包含一个字段,该字段没有 (设置 (的属性值, Name 并在 Namespace 反序列化期间) ,则此数组包含其他数组中尚未包含的任何未知 XML 元素。 如果类包含的多个字段未设置区分 Name、 或 Name 和 Namespace 值,则未指定反序列化期间的行为。
还可以将 应用于 XmlAnyElementAttribute 返回单个 XmlElement 对象的字段。 如果这样做,则必须使用 类的属性和方法 XmlElement 以递归方式循环访问未知元素。
可以将 的 XmlAnyElementAttribute 多个实例应用于一个类成员,但每个实例必须具有不同的 Name 属性值。 或者,如果为每个实例设置了相同的 Name 属性,则必须为每个实例设置不同的 Namespace 属性值。
UnknownNode如果将 应用于类的成员,XmlSerializerXmlAnyElementAttribute则 不会发生 的 和 UnknownAttribute 事件。
注意
可以在代码中使用 单词 XmlAnyElement
,而不是较长 XmlAnyElementAttribute的 。
有关使用特性的详细信息,请参阅 特性。
构造函数
XmlAnyElementAttribute() |
初始化 XmlAnyElementAttribute 类的新实例。 |
XmlAnyElementAttribute(String) |
初始化 XmlAnyElementAttribute 类的新实例并指定在 XML 文档中生成的 XML 元素名称。 |
XmlAnyElementAttribute(String, String) |
初始化 XmlAnyElementAttribute 类的新实例并指定在 XML 文档中生成的 XML 元素名称及其 XML 命名空间。 |
属性
Name |
获取或设置 XML 元素名。 |
Namespace |
获取或设置在 XML 文档中生成的 XML 命名空间。 |
Order |
获取或设置序列化或反序列化元素的显式顺序。 |
TypeId |
在派生类中实现时,获取此 Attribute 的唯一标识符。 (继承自 Attribute) |
方法
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute) |
GetHashCode() |
返回此实例的哈希代码。 (继承自 Attribute) |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
IsDefaultAttribute() |
在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute) |
Match(Object) |
当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |
显式接口实现
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |