2016-12-06 14 views
0

現在、(コードを使用して).xmlファイルをコピーしようとしていますが、これにはさまざまな方法があります。しかし、この方法では、私が以前に持っていたものの、console.writelineの出力を作成するのと同じように、私が最も得意とするように見えます。 .xmlレイアウトを作成するときに、コンソールで動作するようには思えません。それは私にXmlSerializerを使用する場合の無引数コンストラクタ

は「それはパラメータなしのコンストラクタを持っていないため、シリアライズすることができない」次のエラーを与える

は、誰もがこれで私を助けることができるしてください。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 
using System.Xml.Serialization; 

namespace ConsoleApplication1 
{ 
class Program 
{ 
    const string FILENAME = @"SmallResults.xml"; 
    static void Main(string[] args) 
    { 
     List<BasicEvent> NewBasicEvent = new List<BasicEvent>(); 
     XmlTextReader fileReader = new XmlTextReader("SmallResults.xml"); 
     XmlDocument xml = new XmlDocument(); 
     xml.Load(fileReader); 
     XmlNodeList BasicEvents = xml.SelectNodes("/HiP-HOPS_Results/FaultTrees/FMEA/Component/Events/BasicEvent"); 
     if (BasicEvents != null) 
     { 
      XmlNode[] nodearray = BasicEvents.Cast<XmlNode>().ToArray(); 
      for (int i = 0; i < BasicEvents.Count; i++) 
      { 
       NewBasicEvent.Add(new BasicEvent(nodearray[i].FirstChild.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.InnerText, nodearray[i].FirstChild.NextSibling.NextSibling.NextSibling.InnerText)); 
       new XmlSerializer(typeof(BasicEvent)).Serialize(Console.Out, nodearray); 
      } 
     } 


    } 
} 
public class FMEA 
{ 
    public List<Component> components { get; set; } 
} 
public class Component 
{ 
    public string CompName { get; set; } 
    public string BasicEventID { get; set; } 
    public List<BasicEvent> basicevents { get; set; } 
} 
public class Events 
{ 
} 
public class BasicEvent 
{ 
    public string BasicEventName { get; set; } 
    public string BasicEventShortName { get; set; } 
    public string BasicEventDescription { get; set; } 
    public string BasicEventUnavalability { get; set; } 
    public List<Effects> effects { get; set; } 

    public BasicEvent(string basiceventname, string basiceventshortname, string basiceventdescription, string basiceventunavalability) 
    { 
     BasicEventName = basiceventname; 
     BasicEventShortName = basiceventshortname; 
     BasicEventDescription = basiceventdescription; 
     BasicEventUnavalability = basiceventdescription; 
    } 
+1

は、デフォルトコンストラクタを追加します。逆シリアル化には、そのオブジェクトを作成してから値を設定できるように存在する必要があります。クラスに1つ追加します。 –

答えて

4

例外のメッセージは非常に明確です!エラーが利用可能なデフォルトのパラメータなしのコンストラクタがありません言うように

public BasicEvent(){} 
関連する問題