stackoverflow有人提问:
我正在创建一个新的 XML 文档,其中包含一些没有InnerText属性的标签。
如果我用一些数据填充InnerText,那么在这种情况下它会正常运作,会得到开始标记、内部文本和结束标记都放在一行上:
<testtag>somevalue</testtag>
问题出现在没有值的标签上。这些需要以与上面相同的方式显示:
<testtag></testtag>
但是,如果我用空字符串填充内部文本,它会添加一个回车和换行符,这不是导入软件所需要的。
<testtag>
</testtag>
如果我将 innertext 保留为 null,那么我会得到一个自结束标记。同样,这不是想要的。
我已尝试按照其他一些帖子的建议从内部文本中删除/n 和/r,但是一旦保存文档,就会出现同样的问题。
最佳答案
以下代码不受您描述的问题的影响。如果此代码示例没有让您走上正轨,请使用您正在使用的代码更新您的问题,以便我们更好地诊断。(提示 :使用XmlWriter和XmlWriterSettings)
class Program
{
static void Main(string[] args)
{
XmlWriterSettings settings = new XmlWriterSettings {Indent = true};
XmlWriter writer = XmlWriter.Create("C:\\Users\\elaforc\\temp.xml", settings);
XmlDocument xmlDocument = new XmlDocument();
XmlElement parentElement = xmlDocument.CreateElement("Parent");
XmlElement childElement = xmlDocument.CreateElement("Child");
childElement.InnerText = "";
parentElement.AppendChild(childElement);
xmlDocument.AppendChild(parentElement);
xmlDocument.Save(writer);
}
}
生成
<?xml version="1.0" encoding="utf-8"?>
<Parent>
<Child></Child>
</Parent>