2011-08-10 8 views
0

特定のノードを出力してテキストファイルに出力しようとしていますが、エラーメッセージが表示され続けます: 'System.Xml.XmlNodeList'から 'string []'まで:XMLをテキストファイルに出力しますか?

ここで
string[] lines = elemList; 

は、いくつかのより多くのコードです:

namespace countC 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      XmlDocument doc = new XmlDocument(); 
      doc.Load("list.xml"); 

      XmlElement root = doc.DocumentElement; 
      XmlNodeList elemList = root.GetElementsByTagName("version"); 
      for (int i = 0; i < elemList.Count; i++) 
      { 
       Console.WriteLine(elemList[i].InnerXml); 
       string[] lines = elemList; 
       System.IO.File.WriteAllLines(@"C:\VBtest\STIGapp.txt", lines); 
      } 
      Console.ReadKey(); 
     } 
    } 
} 

答えて

2

タイプXmlNodeListのオブジェクトをタイプstring[]の変数に割り当てようとしていますが、この2つは互換性がなく、もう一方からは割り当てられません。あなたの代わりに、この操作を行う場合は

それは、少なくともコンパイルします:

string line = elemList[i].InnerXml; 
System.IO.File.WriteAllText(@"C:\VBtest\STIGapp.txt", line); 

を、私はそれがelemListは、上記の上書きを続けるよりは、1つの要素が含まれている場合は(やりたいということはよく分からないが、与えられたファイル)。

+0

これはうまく動作します。奇妙なことは、テキストファイルがループを保存しないということです。 – nhat

+0

@nhat InnerXmlプロパティは空の文字列であり、要素が空の場合に発生します。デバッガの 'line'の値を確認してください。 – Justin

+0

ああ、データをダブルチェックすると、最後のループだけが保存されます。 – nhat

1

elemListがいるXmlNodeListで、あなたは暗黙的に文字列配列にキャストすることはできません。

あなたはこの

string line = elemList[i].InnerText; 
System.IO.File.WriteAllLines(@"C:\VBtest\STIGapp.txt", line); 

を試みることができるが、もちろんこれは、あなたのデータに依存しています。

+0

こんにちはラス、私はそれを試してみましたが、私は、エラーメッセージが表示されます:私は前にそのオプションを試してみましたが、残念ながら申し訳ありませんああ – nhat

+0

動作しませんでした 「System.Collections.Generic.IEnumerable 」から「文字列」から変換することはできません。 、WriteAllLinesはおそらくWriteLineに変更する必要があります –

+0

恐縮です、ありがとう! – nhat

関連する問題