Xelement 扩展空标签

Posted

技术标签:

【中文标题】Xelement 扩展空标签【英文标题】:Xelement to expanded empty tags 【发布时间】:2011-12-26 11:11:22 【问题描述】:

我在我的 c# 中生成 XML,例如,当我有几个空标签时,

 new XElement("TransLogID", "")

其中一些被渲染为

<TransLogID></TransLogID>

虽然其中一些被渲染为

<TransLogID/>

什么控制标签何时展开,何时不展开?我怎样才能强迫他们做出我想要的行为?

【问题讨论】:

【参考方案1】:

我认为它们有不同的起源。

Root.Add(new XElement("TransLogID1", ""));
Root.Add(new XElement("TransLogID2"));

会给

<TransLogID1></TransLogID1>
<TransLogID2/>

两个元素都有空的 Elements/Nodes 集合,细微的区别在于 TransLogID2 的 IsEmpty=true。

【讨论】:

【参考方案2】:

如果您的内容是空字符串 (new XElement("TransLogID", "")),它将呈现为

<TransLogID></TransLogID>

但如果为空(new XElement("TransLogID", null)),则会呈现为

<TransLogID/>

你确定你总是以同样的方式生成节点吗?

【讨论】:

以上是关于Xelement 扩展空标签的主要内容,如果未能解决你的问题,请参考以下文章

如何确定 XElement.Elements() 是不是包含具有特定名称的节点?

使用动态特性读取 XML 结构

c# Elements of elements using XElement

从 XElement 获取子元素 [重复]

XElement 的子级

如何从 XElement 创建的节点中删除空的 xmlns 属性