お疲れ様です。
TAKKOです。
C#を使用したXMLファイルの取り込みの件で、質問させていただきます。
C#
1//略 2static void Main(string[] args) 3{ 4 //読み込み 5 FileStream inputStream = new FileStream(@"test.xml", FileMode.Open);//ファイルストリームのインスタンス生成 6 XmlSerializer serializer = new XmlSerializer(typeof(ReadingXML.Audit)); // シリアライザーのインスタンスを生成 7 ReadingXML.Audit model = (ReadingXML.Audit)serializer.Deserialize(inputStream); 8}
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 <Audit xmlns="http://~" 3 xmlns:xsi="http://~" 4 xsi:schemaLocation="http~"> 5 <Version>11.2</Version> 6 <AuditRecord> 7 <hoge>1</hoge>//各要素 8 <huge>1</huge>//各要素 9 </AuditRecord> 10</Audit>
こんな感じでコードを組んで、デバッグをするとReading.Audit model内にはプロパティが格納され、各要素が格納され、値の取得が出来ているのが確認できたのですが、
System.InvalidOperationExceptionが発生していて、
内部メッセージに{"XMLドキュメント(2,4)でエラーが発生しました。"}
と出力されてしまいます。
エラーの行としては
ReadingXML.Audit model = (ReadingXML.Audit)serializer.Deserialize(inputStream);
の部分です。
XMLファイルのAudit VersionをXMLファイル内から削除すると正常に読み込むことが出来るのですが、
コード内で、Audit Versionを無視するような処理は可能でしょうか?
よろしくお願いします。
【追記】
正規
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.IO; 7using System.Xml.Serialization; 8 9namespace ReadingXML 10{ 11 [System.Xml.Serialization.XmlRoot("XML")] 12 public class XML 13 { 14 [System.Xml.Serialization.XmlElement("Audit")] 15 public System.Collections.Generic.List<ReadingXML.Audit> Audit { get;set;} 16 } 17 18 /// <summary> 19 /// XMLファイル内のAudit内の各要素のクラス 20 /// </summary> 21 public class Audit 22 { 23 [System.Xml.Serialization.XmlElement("Version")] 24 public String Version { get; set; } 25 [System.Xml.Serialization.XmlElement("AuditRecord")] 26 public System.Collections.Generic.List<ReadingXML.AuditRecord> AuditRecord { get; set; } 27 } 28 29 /// <summary> 30 /// XMLファイル内のAuditRecord内の各要素のクラス 31 /// </summary> 32 public class AuditRecord 33 { 34 [System.Xml.Serialization.XmlElement("Audit_Type")] 35 public String Audit_Type { get; set; } 36 37 //以下12要素(略 38 } 39 40 class Program 41 { 42 static void Main(string[] args) 43 { 44 string filePath = @"test.xml"; 45 //読み込み 46 FileStream inputStream = new FileStream(filePath, FileMode.Open);//ファイルストリームのインスタンス生成 47 XmlSerializer serializer = new XmlSerializer(typeof(ReadingXML.Audit)); // シリアライザーのインスタンスを生成 48 ReadingXML.Audit model = (ReadingXML.Audit)serializer.Deserialize(inputStream); 49 } 50 } 51} 52
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 <Audit xmlns="http://~" 3 xmlns:xsi="http://~" 4 xsi:schemaLocation="~"> 5 <Version>11.2</Version> 6<AuditRecord><Audit_Type>1</Audit_Type> 7</AuditRecord> 8<AuditRecord><Audit_Type>1</Audit_Type></AuditRecord>//Audit_Type以外にも要素はあるが略 9<AuditRecord><Audit_Type>1</Audit_Type></AuditRecord> 10<AuditRecord><Audit_Type>1</Audit_Type></AuditRecord> 11<AuditRecord><Audit_Type>1</Audit_Type></AuditRecord> 12</Audit>

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 04:47
2017/05/23 04:51
2017/05/23 05:19
2017/05/23 05:55
2017/05/23 06:42 編集
2017/05/23 07:00
2017/05/23 08:36
2017/05/23 08:52
2017/05/23 08:57
2017/05/23 09:02
2017/05/24 00:14
2017/05/24 00:17
2017/05/24 00:23
2017/05/24 00:30
2017/05/25 07:48
2017/05/25 10:57
2017/05/26 01:55
2017/05/26 03:11