我正在根据从数据库中提取的一些数据构建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"))
)
)
...
因此,我需要确定ValueQoParse的LINQ查询是否具有有效值(非空)。如果是,那么我可以添加节点及其值。如果它没有,我需要添加该命名节点,但属性为'xsi:nil =“true”'
需要注意的是,有一些后代在不同的父节点上重复(例如,有一个AddressDetails节包含AddressDetail元素。这些AddressDetail元素可以包含0或1个Contact元素的Contact组,所以添加一个节点到Contacts节点不是一个简单的选项,因为它只有一个Contacts元素)。
我通常不会使用LINQ,但它在XD时看起来像个好主意
谢谢, 克里斯
答案 0 :(得分:3)
对不起我的基本=)但我希望你能得到主要的想法。
New XElement("ParentNode",
From db as DataRow in dtTable.Rows _
Order By db("Field") _
Select New XElement("ChildNode",
db("ValueToParse") != null ? (object)new XElement("ChildID", db("ValueToParse")) :
(object)new XAttribute("xsi:nil", "true"))
)
)