2016-08-05 2 views
0

私は読みたいファイルの束を持っており、SQLデータベースに挿入するテーブルにいくつかの値を保存して保存します。フォルダは次のようになります。 C:\ document \ vehiclesです。 Volvo.xml 、 BMW.xml、Audi.xmlと各内側のようなノードの束が、ルックスに興味イムノードを持つファイル::とフォルダ内の私のようなファイルを持っている私はフォルダ内のすべてのxmlファイルを読み込んでデータテーブルに保存してください

<FpcBlock Version="01"> 
     <FPC Name="1" Value="A" Updated="false" /> 
     <FPC Name="3" Value="B" Updated="false" /> 
<FpcBlock Version="01"> 

をすべての値が読み込まれるまで、これは上に行く必要がありますし、私は次のファイルに続けていきたいと考えて

Datatable example

:のようになります。テーブルにFPC名前と値を保存したいですアウディとテーブルに記入し続ける。 現在、私は最初のファイルをまったく読み取ることができませんでした。どのように私は上に移動すべきすべてのアイデア?

私の現在のコード:

public partial class Form1 : Form 
{ 
    XmlDocument doc = new XmlDocument(); 
    DirectoryInfo difo = new DirectoryInfo(@"C:\Users\ahodhv\Perforce\ahodhv_RD0029717_1921\prod\delivery\q_rec\int_test\SOPS"); 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     FileInfo[] Files = difo.GetFiles("*.xml");    
     string[] parts; 

     foreach (FileInfo File in Files) 
     { 
      parts = File.Name.Split('_');            
      boxvehicles.Items.Add(parts[0]); 
      doc.Load(File.DirectoryName); 
      XmlNode node = doc.DocumentElement.SelectSingleNode("FpcBlock Version"); 
      string text = node.InnerText;    
     } 


    } 
} 
+0

あなたのコードに問題があるようです。しかし、[問題を再現できるコードや情報がある](// stackoverflow.com/help/mcve)しない限り、私たちは手伝ってはいけません。それ以外の場合、私たちはただ盲目的に推測しています。 – rene

+0

まだコードを書いていません。私は始める方法を知らない。 –

+0

あなたのすべての作業を行うには、スタックオーバーフローは素晴らしいサイトではありません。例えば、[MSDN](https://msdn.microsoft.com/en-us/library/2kzb96fk.aspx)を読むなど、いくつかの努力をしなければなりません。それはいつもあなたを始めるはずです。投稿を改善するために[チェックリスト](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)を使用し、少なくともxmlユーザーが画像を貼り付けて貼り付けてください。 – rene

答えて

1

[OK]を、最初にあなたのXMLが間違っている、それはこの

<?xml version="1.0" encoding="utf-8"?> 
<FpcBlock Version="01"> 
     <FPC Name="1" Value="A" Updated="false" /> 
     <FPC Name="3" Value="B" Updated="false" /> 
     <FPC Name="5" Value="B" Updated="false" /> 
     <FPC Name="8" Value="B" Updated="false" /> 
     <FPC Name="10" Value="B" Updated="false" /> 
     <FPC Name="11" Value="A" Updated="false" /> 
     <FPC Name="14" Value="Q" Updated="false" /> 
</FpcBlock> 

ようにする必要があります次に、あなたにあなたのXMLをデシリアライズするためにC#のオブジェクトを作成する必要があります。

[Serializable()] 

    [XmlRoot(ElementName = "FPC")] 
    public class FPC 
    { 
     [XmlAttribute(AttributeName = "Name")] 
     public string Name { get; set; } 
     [XmlAttribute(AttributeName = "Value")] 
     public string Value { get; set; } 
     [XmlAttribute(AttributeName = "Updated")] 
     public string Updated { get; set; } 
    } 

    [XmlRoot(ElementName = "FpcBlock")] 
    public class FpcBlock 
    { 
     [XmlElement(ElementName = "FPC")] 
     public List<FPC> FPC { get; set; } 
    } 

その後、私はこのコードをテストしていると、それは魔法のように動作し、この

static void Main(string[] args) 
     { 

      FpcBlock cars = null; 
      var path = @"C:\temp\car.xml"; 

      var serializer = new XmlSerializer(typeof(FpcBlock)); 

      var reader = new StreamReader(path); 
      cars = (FpcBlock)serializer.Deserialize(reader); 
      reader.Close(); 
     } 

のように電話をかけます。今度はそれらをデータテーブルに入れてからデータベースに入れる必要はなく、EntityFrameWorkを使ってオブジェクトをデータベースに直接挿入することができます。

(もう1つのこと、あなたのロジックの内部にボタンのイベントを挿入しないでください。)これは悪い習慣です。

+0

ありがとうございました!私は答えとしてマークします。 –

関連する問題