使用空字符串编写XMLDocument元素innertext会添加换行符。

3
我正在创建一个新的XML文档,其中一些标签没有innertext。
如果我将innertext填充为一些数据,则在这种情况下它按预期工作,即您可以在一行上获取开放标签、innertext和关闭标签: somevalue 问题出现在没有值的标记中。 这些需要以与上述相同的方式显示: 但是,如果我使用空字符串填充innertext,则会添加回车符和换行符,这不是导入软件所需的。 如果我将innertext保留为空,则会得到自我封闭的标签。 再次,这不是所需的。
我已经尝试从innertext中删除/n和/r,因为其他帖子建议,但是一旦保存文档,就会出现相同的问题。

我有一个类似的问题,这似乎是由XMLDocument.Save()方法引起的。在保存之前,属性为空,没有任何CR/LF,这是应该的。 - codea
1个回答

2
以下代码没有遇到您所描述的问题。如果这份代码示例没有让你找对方向,请更新你的问题,并提供你正在使用的代码,这样我们可以更好地诊断问题。
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>

我希望这对我有用,因为它看起来是一个完全有效的答案!我不知道为什么这个线程停滞了,这个答案从未被接受!我在这里也遇到了类似的问题https://dev59.com/eGIk5IYBdhLWcg3wdd4l,但我的问题是关于加载XML文件而不仅仅是创建一个新文件。 - Arvo Bowen
关键点在于以下代码行:XmlWriterSettings settings = new XmlWriterSettings {Indent = true}; - codea
@eric 有没有不使用xmlWriterSettings实现相同效果的方法? - Ishan Pandya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接