タグ付けされた質問 「xml-serialization」

このタグは、XMLをデータ形式として使用するシリアル化テクノロジを示します。

18
XmlSerializerがコンストラクタでFileNotFoundExceptionを与える
タイプをシリアル化しようとすると、以前使用していたアプリケーションが失敗します。 のようなステートメント XmlSerializer lizer = new XmlSerializer(typeof(MyType)); 生成する: System.IO.FileNotFoundException occurred Message="Could not load file or assembly '[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified." Source="mscorlib" FileName="[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" FusionLog="" StackTrace: at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, …

10
オブジェクトを文字列にシリアル化する
オブジェクトをファイルに保存するには、次の方法があります。 // Save an object out to the disk public static void SerializeObject<T>(this T toSerialize, String filename) { XmlSerializer xmlSerializer = new XmlSerializer(toSerialize.GetType()); TextWriter textWriter = new StreamWriter(filename); xmlSerializer.Serialize(textWriter, toSerialize); textWriter.Close(); } 私はそれを書いていないことを告白します(型パラメーターを受け取る拡張メソッドに変換しただけです)。 これで、xmlを(ファイルに保存するのではなく)文字列として返す必要があります。調査中ですが、まだわかりません。 これらのオブジェクトに精通している人にとっては、これは本当に簡単かもしれないと思いました。そうでなければ、私は最終的にそれを理解します。

17
オブジェクトをXMLにシリアル化する
継承したC#クラスがあります。オブジェクトの「ビルド」に成功しました。しかし、オブジェクトをXMLにシリアル化する必要があります。それを行う簡単な方法はありますか? クラスはシリアル化用に設定されているようですが、XML表現を取得する方法がわかりません。私のクラス定義は次のようになります: [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.domain.com/test")] [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.domain.com/test", IsNullable = false)] public partial class MyObject { ... } これが私ができると思ったものですが、うまくいきません: MyObject o = new MyObject(); // Set o properties string xml = o.ToString(); このオブジェクトのXML表現を取得するにはどうすればよいですか?

12
{"<user xmlns = ''>は予期されていませんでした。} Twitter XMLを逆シリアル化しています
私はTwitterからOAuth経由でXMLを取得しています。 次のXMLを返すhttp://twitter.com/account/verify_credentials.xmlへのリクエストを実行しています。 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;user&gt; &lt;id&gt;16434938&lt;/id&gt; &lt;name&gt;Lloyd Sparkes&lt;/name&gt; &lt;screen_name&gt;lloydsparkes&lt;/screen_name&gt; &lt;location&gt;Hockley, Essex, UK&lt;/location&gt; &lt;description&gt;Student&lt;/description&gt; &lt;profile_image_url&gt;http://a3.twimg.com/profile_images/351849613/twitterProfilePhoto_normal.jpg&lt;/profile_image_url&gt; &lt;url&gt;http://www.lloydsparkes.co.uk&lt;/url&gt; &lt;protected&gt;false&lt;/protected&gt; &lt;followers_count&gt;115&lt;/followers_count&gt; &lt;profile_background_color&gt;9fdaf4&lt;/profile_background_color&gt; &lt;profile_text_color&gt;000000&lt;/profile_text_color&gt; &lt;profile_link_color&gt;220f7b&lt;/profile_link_color&gt; &lt;profile_sidebar_fill_color&gt;FFF7CC&lt;/profile_sidebar_fill_color&gt; &lt;profile_sidebar_border_color&gt;F2E195&lt;/profile_sidebar_border_color&gt; &lt;friends_count&gt;87&lt;/friends_count&gt; &lt;created_at&gt;Wed Sep 24 14:26:09 +0000 2008&lt;/created_at&gt; &lt;favourites_count&gt;0&lt;/favourites_count&gt; &lt;utc_offset&gt;0&lt;/utc_offset&gt; &lt;time_zone&gt;London&lt;/time_zone&gt; &lt;profile_background_image_url&gt;http://s.twimg.com/a/1255366924/images/themes/theme12/bg.gif&lt;/profile_background_image_url&gt; &lt;profile_background_tile&gt;false&lt;/profile_background_tile&gt; &lt;statuses_count&gt;1965&lt;/statuses_count&gt; &lt;notifications&gt;false&lt;/notifications&gt; &lt;geo_enabled&gt;false&lt;/geo_enabled&gt; &lt;verified&gt;false&lt;/verified&gt; &lt;following&gt;false&lt;/following&gt; &lt;status&gt; &lt;created_at&gt;Mon Oct 12 19:23:47 +0000 2009&lt;/created_at&gt; &lt;id&gt;4815268670&lt;/id&gt; &lt;text&gt;&amp;#187; @alexmuller …

14
XML文字列をオブジェクトに変換
ソケットを介してXML文字列を受信して​​いますが、これらをC#オブジェクトに変換したいと考えています。 メッセージの形式は次のとおりです。 &lt;msg&gt; &lt;id&gt;1&lt;/id&gt; &lt;action&gt;stop&lt;/action&gt; &lt;/msg&gt; 私は.Netを初めて使用するので、これを実行するためのベストプラクティスがわかりません。以前にJAXB for Javaを使用したことがあり、同様のものがあるかどうか、またはこれが別の方法で処理されるかどうかはわかりませんでした。

4
XMLシリアル化可能クラスにパラメーターのないコンストラクターが必要な理由
Xmlシリアル化を行うコードを書いています。以下の機能付き。 public static string SerializeToXml(object obj) { XmlSerializer serializer = new XmlSerializer(obj.GetType()); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, obj); return writer.ToString(); } } 引数がパラメーターなしのコンストラクターのないクラスのインスタンスである場合、例外がスローされます。 未処理の例外:System.InvalidOperationException:CSharpConsole.Fooにはパラメーターのないコンストラクターがないため、シリアル化できません。System.Xml.Serialization.ModelScope.GetTypeModel(Type type、System.Xml.Serialization.TypeDesc.CheckSupported()でSystem.Xml.Serialization.TypeScope.GetTypeDesc(Type type、MemberInfo sourc e、Boolean directReference、Boolean throwOnError)でSystem.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type、XmlRootAttribute root、String defaultNamespace)のSystem.Xml.Serialization.XmlSerializer..ctor(Type type、String defaultName space)のSystem.Xml.Serializationのブール値の直接参照)。 XmlSerializer..ctor(タイプタイプ) XMLのシリアル化を成功させるために、パラメーターのないコンストラクターが必要なのはなぜですか? 編集:cfedukeの回答に感謝します。パラメーターなしのコンストラクターは、プライベートまたは内部にすることができます。

7
XMLをList <T>に逆シリアル化することは可能ですか?
次のXMLがあるとします。 &lt;?xml version="1.0"?&gt; &lt;user_list&gt; &lt;user&gt; &lt;id&gt;1&lt;/id&gt; &lt;name&gt;Joe&lt;/name&gt; &lt;/user&gt; &lt;user&gt; &lt;id&gt;2&lt;/id&gt; &lt;name&gt;John&lt;/name&gt; &lt;/user&gt; &lt;/user_list&gt; そして次のクラス: public class User { [XmlElement("id")] public Int32 Id { get; set; } [XmlElement("name")] public String Name { get; set; } } を使用XmlSerializerしてxmlを非シリアル化してにできList&lt;User&gt;ますか?その場合、どのタイプの追加属性を使用する必要がありますか、またはXmlSerializerインスタンスを作成するためにどの追加パラメーターを使用する必要がありますか? 配列(User[])は、少し望ましくない場合は許容されます。

5
IXmlSerializableを実装する適切な方法は?
プログラマがを実装することを決定したら、IXmlSerializableそれを実装するためのルールとベストプラクティスは何ですか?私がいることを聞いたことがGetSchema()返す必要がありますnullし、ReadXml戻る前に、次の要素に移動する必要があります。これは本当ですか?またWriteXml、オブジェクトのルート要素を記述する必要がありますか、それともルートがすでに記述されていると想定されていますか?子オブジェクトはどのように扱われ、記述されるべきですか? これが私が今持っているもののサンプルです。良い反応が得られたら更新します。 public class MyCalendar : IXmlSerializable { private string _name; private bool _enabled; private Color _color; private List&lt;MyEvent&gt; _events = new List&lt;MyEvent&gt;(); public XmlSchema GetSchema() { return null; } public void ReadXml(XmlReader reader) { if (reader.MoveToContent() == XmlNodeType.Element &amp;&amp; reader.LocalName == "MyCalendar") { _name = reader["Name"]; _enabled = Boolean.Parse(reader["Enabled"]); …

5
.NETでオブジェクトをシリアル化するときにすべてのxsiおよびxsd名前空間を省略しますか?
コードは次のようになります。 StringBuilder builder = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter xmlWriter = XmlWriter.Create(builder, settings)) { XmlSerializer s = new XmlSerializer(objectToSerialize.GetType()); s.Serialize(xmlWriter, objectToSerialize); } 結果のシリアル化されたドキュメントには、次のような名前空間が含まれます。 &lt;message xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns="urn:something"&gt; ... &lt;/message&gt; xsiおよびxsd名前空間を削除するには、xmlns =”…”を取得せずにオブジェクトをXMLにシリアル化する方法の回答に従います。。 &lt;message&gt;(名前空間属性なしの)メッセージタグが必要です。これどうやってするの?

4
XmlSerializer:不要なxsiおよびxsd名前空間を削除
ルート要素にデフォルトの名前空間を書き込まないようにXmlSerializerを構成する方法はありますか? 私が得るものはこれです: &lt;?xml ...&gt; &lt;rootelement xmlns:xsi="..." xmlns:xsd="..."&gt; &lt;/rootelement&gt; 両方のxmlns宣言を削除したいと思います。 の重複:xmlns =”…”を取得せずにオブジェクトをXMLにシリアル化する方法?

7
XMLシリアル化-null値を非表示にする
標準の.NET Xmlシリアライザーを使用している場合、すべてのnull値を非表示にする方法はありますか?以下は、私のクラスの出力の例です。nullに設定されている場合、null許容整数を出力したくありません。 現在のXML出力: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;myClass&gt; &lt;myNullableInt p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" /&gt; &lt;myOtherInt&gt;-1&lt;/myOtherInt&gt; &lt;/myClass&gt; 私が欲しいもの: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;myClass&gt; &lt;myOtherInt&gt;-1&lt;/myOtherInt&gt; &lt;/myClass&gt;


19
.NET XMLシリアライゼーションの問題?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 共有したいと思っていたC#XMLシリアル化を実行するときに、いくつかの落とし穴に遭遇しました。 読み取り専用のアイテム(KeyValuePairsなど)をシリアル化することはできません 一般的な辞書をシリアル化することはできません。代わりに、このラッパークラスを試してください(http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspxから): using System; using System.Collections.Generic; using System.Text; using System.Xml.Serialization; [XmlRoot("dictionary")] public class SerializableDictionary&lt;TKey, TValue&gt; : Dictionary&lt;TKey, TValue&gt;, IXmlSerializable { public System.Xml.Schema.XmlSchema GetSchema() { return null; } public void ReadXml(System.Xml.XmlReader reader) { XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); bool wasEmpty = reader.IsEmptyElement; reader.Read(); …

4
.NETでオブジェクトをUTF-8 XMLとしてシリアル化する
適切なオブジェクトの破棄は簡潔にするために削除されましたが、これがオブジェクトをメモリ内でUTF-8としてエンコードする最も簡単な方法であるとは驚きです。より簡単な方法がなければなりませんか? var serializer = new XmlSerializer(typeof(SomeSerializableObject)); var memoryStream = new MemoryStream(); var streamWriter = new StreamWriter(memoryStream, System.Text.Encoding.UTF8); serializer.Serialize(streamWriter, entry); memoryStream.Seek(0, SeekOrigin.Begin); var streamReader = new StreamReader(memoryStream, System.Text.Encoding.UTF8); var utf8EncodedXml = streamReader.ReadToEnd();


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.