.NET の Xml シリアライザーを通じてコンテンツを XML ファイルに書き込みます。ここではリスト集の連載を紹介します。
シリアル化 (Serialization) は、オブジェクトの状態情報を保存または送信できる形式に変換するプロセスです。シリアル化中、オブジェクトは現在の状態を一時ストレージまたは永続ストレージに書き込みます。後で、オブジェクトの状態をストアから読み取るか逆シリアル化することで、オブジェクトを再作成できます。
シリアル化を使用すると、シリアル化なしではアクセスできないオブジェクト インスタンス データを他のコードで表示または変更できるようになります。具体的には、シリアル化を実行するコードには特別なアクセス許可 (SerializationFormatter フラグが指定された SecurityPermission) が必要です。デフォルトポリシーではインターネット経由 ダウンロードされたコードまたはイントラネット コードにはこのアクセス許可が付与されません。ローカル コンピューター上のコードのみにこのアクセス許可が付与されます。
通常、オブジェクト インスタンスのすべてのフィールドはシリアル化されます。これは、データがインスタンスのシリアル化されたデータとして表されることを意味します。このようにして、形式を解釈できるコードは、メンバーのアクセシビリティに依存せずにこのデータの値を決定できる可能性があります。同様に、逆シリアル化では、アクセシビリティ ルールに関係なく、シリアル化された表現からデータが抽出され、オブジェクトの状態が直接設定されます。
重要なセキュリティ データが含まれる可能性のあるオブジェクトは、可能であればシリアル化不可能にする必要があります。シリアル化可能にする必要がある場合は、シリアル化できない重要なデータを保持する特定のフィールドを生成してみてください。これが不可能な場合は、シリアル化権限を持つコードにデータが公開されることに注意し、悪意のあるコードがその権限を取得しないようにする必要があります。
要約すると、: シリアル化とは、ストレージと情報交換を容易にするために、複雑なオブジェクトをストリームに変換することです。セキュリティについてはあまり詳しくありませんが、重要なのは、一部の情報を機密にする必要がある場合、他の人がそれを逆シリアル化できないように、その情報を非シリアル化可能として定義することです。私は初心者です、連載に関する深い洞察があれば、貴重なコメントを残していただければ幸いです。
(1) まず、名前、年齢、電子メールの 3 つの属性を含む person クラスを作成します。
<span style="font-family:Microsoft YaHei;font-size:18px;">public class person { public string Name { set; get; } [XmlIgnore] public int Age { get; set; } public string Email { get; set; } }</span>
注: 上記のコードの [XmlIgnore] は、Age 属性に対するシリアル化できない操作です。これは、Xml シリアライザー専用のシリアル化不可能な機能です。それ以外のオブジェクトの場合は、[NonSerialized] を使用します。
(2) XML シリアル化を実現するためにリスト コレクションを通じてデータを追加します
<span style="font-family:Microsoft YaHei;font-size:18px;">List<person> list=new List<person> (); list.Add(new person() { Name = "istari", Age = 22, Email = "1061399756@qq.com" }); list.Add(new person() { Name = "ss", Age = 22, Email = "1061399756@qq.com" }); list.Add(new person() { Name = "ww", Age = 22, Email = "521@qq.com" }); //实现xml序列化 XmlSerializer xml = new XmlSerializer(typeof(List<person>)); using (FileStream fs=File.OpenWrite ("List.xml")) { xml.Serialize(fs, list); } Console.WriteLine("OK"); Console.ReadKey();</span>
(3) 結果
<span style="font-family:Microsoft YaHei;font-size:18px;"><?xml version="1.0"?> <ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <person> <Name>istari</Name> <Email>1061399756@qq.com</Email> </person> <person> <Name>ss</Name> <Email>1061399756@qq.com</Email> </person> <person> <Name>ww</Name> <Email>521@qq.com</Email> </person> </ArrayOfPerson></span>
PS
この方法により、 XML ファイルに書き込まれる形式は、Xml シリアライザーによって内部的に設定された形式です。自分で変更する必要はありません。システム シリアライザーを使用する代わりに、シリアライザーを自分で作成することもできます。次の記事は皆さんにシェアしていただく記事です。