XmlAnyElementAttributes.Add メソッド
XmlAnyElementAttribute をコレクションに追加します。
Public Function Add( _
ByVal attribute As XmlAnyElementAttribute _) As Integer
[C#]
public int Add(XmlAnyElementAttributeattribute);
[C++]
public: int Add(XmlAnyElementAttribute* attribute);
[JScript]
public function Add(
attribute : XmlAnyElementAttribute) : int;
パラメータ
- attribute
追加する XmlAnyElementAttribute 。
戻り値
新しく追加された XmlAnyElementAttribute のインデックス。
使用例
[Visual Basic, C#, C++] 新しい XmlAnyElementAttribute を作成し、その属性オブジェクトを、 XmlAnyElements プロパティからアクセスできるオブジェクトのコレクションに追加する例を次に示します。その後、 XmlAttributes を、 XmlSerializer を作成するために使用される XmlAttributeOverrides に追加します。作成された XmlSerializer が、オブジェクトのシリアル化または逆シリアル化に使用されます。 XmlAnyElementAttributes プロパティを使用した結果を確認するには、 Main
メソッドの SerializeObject
メソッドを実行して、UnknownElements.xml という名前の XML ドキュメントを作成します。結果として作成されたドキュメントを編集して、その他の (不明な) 要素を含めます。 Main
メソッド内の SerializeObject
の呼び出しをコメント行に変更し、 DeserializeObject
メソッドの呼び出しはコメントから外します。これにより、不明な XML 要素の名前と値が出力されるようになります。
Imports System
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
[C#]
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);
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
#using <System.xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml::Serialization;
using namespace System::Xml;
public __gc class Group
{
public:
String* GroupName;
[XmlAnyElement]
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(S"UnknownElements.xml");
// DeserializeObject(S"UnknownElements.xml");
}
void SerializeObject(String* filename)
{
XmlSerializer* ser = new XmlSerializer( __typeof(Group));
TextWriter* writer = new StreamWriter(filename);
Group* g = new Group();
g->GroupName = S"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 = new FileStream(filename, FileMode::Open);
Group* g = __try_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 = __try_cast<XmlElement*>( g->Things[i] );
Console::WriteLine( S"{0}: {1}", xelement->Name, xelement->InnerXml );
}
}
XmlSerializer* CreateOverrideSerializer()
{
XmlAnyElementAttribute* myAnyElement = new XmlAnyElementAttribute();
XmlAttributeOverrides* xOverride = new XmlAttributeOverrides();
XmlAttributes* xAtts = new XmlAttributes();
xAtts->XmlAnyElements->Add(myAnyElement);
xOverride->Add(__typeof(Group), S"Things", xAtts);
return new XmlSerializer(__typeof(Group) , xOverride);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
XmlAnyElementAttributes クラス | XmlAnyElementAttributes メンバ | System.Xml.Serialization 名前空間