XML新内衬文本

时间:2012-07-10 20:49:40

标签: c# .net xml newline indentation

我正在使用XML,我遇到了这个问题:我想在一行上添加一个内部文本,由开启和关闭元素标签分隔。像这样:

<root>
 <child name="name">
  Hi! I'm inner text!
 </child>
</root>

但如果我添加内部文字:

child.InnerText = "Hi! I'm inner text!";

我所有人都在同一条线上:

<root>
 <child name="name">Hi! I'm inner text!</child>
</root>

我试图添加:

xDoc.PreserveWhitespace = true;

保存功能之前没有结果。试过:

child.AppendChild(xDoc.CreateWhitespace("\n"));

在InnerText指令之后或之前。没有。一些帮助?

编辑:这是我保存XML的方式:

xDoc.Save(filename);

1 个答案:

答案 0 :(得分:1)

有几种不同的选择。您可以设置XmlElement的InnerText或附加文本节点。

XmlDocument xDoc = new XmlDocument();
xDoc.PreserveWhitespace = true;

XmlNode root = xDoc.AppendChild(xDoc.CreateElement("root"));
XmlNode child = root.AppendChild(xDoc.CreateElement("child"));

((XmlElement)child).InnerText = "\nHi! I'm Inner Text!\n";
child.AppendChild(xDoc.CreateTextNode("\nHi! I'm also Inner Text\n"));
xDoc.Save(@"c:\temp\temp.xml");
Debug.Write(xDoc.InnerXml.ToString());

请记住,根据您查看生成的XML的方式,您可能看不到文档中生成的换行符。例如,IE在向您展示文档的漂亮版本时会很高兴地忽略它们。