【发布时间】:2011-06-27 21:14:43
【问题描述】:
我正在根据从数据库中提取的一些数据构建 XML,并考虑尝试使用 LINQ2XML 构建 XML。数据来自几个不同的地方,所以我一直在根据我在 DataTable 对象中填充的内容按部分构建 XML。
使用 XElements 和 XAttributes,我可以得到一个或另一个,但我想知道是否有人对如何在构建 XML 时确定是使用 XElement 还是 XAttribute 有所了解。
这是 XML 构建代码中的一部分,其中 XAttribute 硬编码 (VB.NET):
...
New XElement("ParentNode",
New XElement("ChildNode",New XAttribute(XNamespace.Xmlns + "nil", "true"))
)
...
以下是我在整个 XML 构建过程中用于在必要时构建子节点的示例:
...
New XElement("ParentNode",
From db as DataRow in dtTable.Rows _
Order By db("Field") _
Select New XElement("ChildNode",
New XElement("ChildID",db("ValueToParse"))
)
)
...
因此,例如,我需要在该 LINQ 查询中确定 ValueToParse 是否具有有效值(非空)。如果是这样,那么我可以添加节点及其值。如果没有,我需要添加该命名节点,但属性为 'xsi:nil="true"'
需要注意的是,有些后代会在不同的父级上重复(例如,有一个包含 AddressDetail 元素的 AddressDetails 部分。这些 AddressDetail 元素可以包含 0 或 1 个 Contacts 组的 Contact 元素,因此将节点添加到联系人节点不是一个简单的选项,就像只有一个联系人元素时那样)。
我通常不使用 LINQ,但当时它似乎是个好主意 XD
谢谢, 克里斯
【问题讨论】: