2017-04-03 7 views
0

.csvファイルに基づいてXMLファイルを作成しようとしています。 .csvファイルを読み込み、一部の部分を置き換えるために私の古い方法を使うことができると思った。しかし、私が言った例外を取得:C#Linq XML InvalidOperationException

InvalidOperationExceptionがここ

は私のコードは次のとおりです。

public void LoadFile() { 
     XDocument outputDocument = new XDocument(); 
     outputDocument.Add(new XElement("Inventory")); 

     using (var fstream = File.OpenRead(FilePathProducts)) 
     using (var fileReader = new StreamReader(fstream)) { 
      while (!fileReader.EndOfStream) { 
       var readLine = fileReader.ReadLine(); 
       var words = readLine.Split(';'); 


       outputDocument.Add(
        new XElement("Item", 
         new XElement("Name", words[1]), 
         new XElement("Count", words[3]), 
         new XElement("Price", words[4]), 
         new XElement("Comment", "<Missing Value>"), 
         new XElement("Artist", "<Missing Value>"), 
         new XElement("Publisher", "Nintendo"), 
         new XElement("Genre", "<Missing Value>"), 
         new XElement("Year", words[0]), 
         new XElement("ProductID", words[2]) 
        ) 
       ); 
      } 
     } 

     outputDocument.Save(FilePathResult); 
    } 

これは(おおよその翻訳。) "不当に構造化文書が作成された" について何かを言う

ループを削除しようとすると、出力ファイルに自己閉鎖インベントリタグしか表示されませんでした。私はそれがオープンでクローズドタグであることを期待していました。だから、私は上記のコードの3行目で何かが間違っていると推測しています。

+1

ヒント:// WWW:あなたは、[ローカライズされたエラーメッセージ検索](httpsを使用することができますMicrosoft.com/Language/ja-US/Emt.aspx)を使用して、エラーメッセージを言語から英語に翻訳します。 – Default

答えて

3

Item要素をXML文書に直接追加しようとしていますが、XML文書に複数のルート要素を含めることはできません。それがエラーを起こす理由です。

私はあなたが実際にあなたがこれを行う必要があり、その場合にはInventory要素、それらを追加したいと推定:

public void LoadFile() { 
    var outputDocument = new XDocument(); 
    var inventory = new XElement("Inventory"); 
    outputDocument.Add(inventory); 

    using (var fstream = File.OpenRead(FilePathProducts)) 
    using (var fileReader = new StreamReader(fstream)) { 
     while (!fileReader.EndOfStream) { 
      var readLine = fileReader.ReadLine(); 
      var words = readLine.Split(';'); 


      inventory.Add(
       new XElement("Item", 
        new XElement("Name", words[1]), 
        new XElement("Count", words[3]), 
        new XElement("Price", words[4]), 
        new XElement("Comment", "<Missing Value>"), 
        new XElement("Artist", "<Missing Value>"), 
        new XElement("Publisher", "Nintendo"), 
        new XElement("Genre", "<Missing Value>"), 
        new XElement("Year", words[0]), 
        new XElement("ProductID", words[2]) 
       ) 
      ); 
     } 
    } 

    outputDocument.Save(FilePathResult); 
} 
+0

それは私が欲しかったものです。 =) しかし..最後の行は私に問題を与えているoutputDocument.Save(FilePathResult); 「xml-documentが無効です」というメッセージが表示されますか? –

+0

@Phrosen正確なエラーは何ですか?あなたは英語以外の言語で.NETを使用しているように思えますので、元の言語で自由に投稿できます。 – JLRishe

+0

申し訳ありません。私はちょうど私が一連のコードを見逃していたことに気づいた。それは今働く。ありがとうございました。 =) –