2012-03-26 17 views
1

我用下面的代码到一个XML文件中的内容复制到一个richTextox如何在将XML文件的每个节点复制到richTextbox时将其发送到新行?

XmlDocument xdoc = new XmlDocument();
xdoc.Load(filename);
richTextBox1.Text = xdoc.InnerText;

但结果却是一个连续的字符串,例如

<node1>...</node1><node2>...</node2><node3>...</node3>

所以我怎么会发送每个元素到一个新的行?
为了有相同的结果,但垂直。
是否有可能以我将内容复制到richTexbox的方式进行操作?

+0

你可以使用XmlTextWriter'w.Formatting = Formatting.Indented;'? – LarsH 2012-03-26 15:24:18

+0

“那么我怎么能把每个节点发送到一个新的行?”我假设你的意思是“每个元素”?否则,具有属性和文本内容的元素至少需要三行:一个用于元素节点,一个用于属性节点,另一个用于文本节点。 – LarsH 2012-03-26 15:44:37

+0

正确!我的意思是每个元素。但是不管我多么努力地使用XmlTextWriter,我都做不到,我一定在做错事。 – Karapapas 2012-03-26 15:50:54

回答

1

不知道这是你在找什么。已经有一段时间,因为我工作在C#

XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(filename); 
XmlNode root = xdoc.DocumentElement; 

    //Display the contents of the child nodes. 
    if (root.HasChildNodes) 
    { 
     for (int i=0; i<root.ChildNodes.Count; i++) 
     { 
     richTextBox1.AppendText(root.ChildNodes[i].InnerText+"\n"); 
     } 
    } 
+0

这会将每个子节点(根节点)放在一行上,但不会在子孙元素之间放置换行符。我认为OP在每个后代元素之后都要换行...他说“每个节点”,我解释为“每个元素”。 – LarsH 2012-03-26 15:41:21

+0

我明白了。他不想要每个节点的内容?所以他希望在元素之后有一条线。我是否删除我的答案呢? – Venki 2012-03-26 15:47:06

+0

我认为他确实需要每个元素的内容,但是他也希望在每个元素之后有一个换行符(即在关闭标签之后)。再次,我的解释。你可以更新你的答案递归地下降到每个子元素,并在每个后代元素后面放置一个换行符。或者你可以保留你的答案,看看它是否足以满足OP的目的。 – LarsH 2012-03-26 15:49:10

相关问题