2011-08-10 70 views
0

我想输出特定的节点输出到一个文本文件(输出到控制台罚款),但我不断收到一条错误消息:在这条线“System.Xml.XmlNodeList”到“字符串[]”: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[]的变量 - 两者不兼容,您无法从另一个中指定一个。

如果你这样做,而不是那么它至少会编译:

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

虽然我不知道它会做你想要什么(如果elemList含有较多的一个元素上面将继续覆盖给定文件)。

+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

嗨拉斯,我想,但我得到一个错误信息:无法从“字符串”转换为“System.Collections.Generic.IEnumerable ” 我没有尝试选项之前,但遗憾的是没有工作 – nhat

+0

哦对不起,WriteAllLines应该可能改为WriteLine –

+0

真棒,谢谢! – nhat