c# - 用空字符串编写 XMLDocument 元素内部文本会添加回车换行的解决方案

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值