gpt4 book ai didi

c# - LINQ to SQL to XML(在 C# 中使用 XML 文字)

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:22 26 4
gpt4 key购买 nike

是否可以使用像<%=person.LastName %>这样的变量?以这种方式在 XML 字符串中?

XElement letters = new XElement("Letters");

XElement xperson = XElement.Parse("<Table><Row><Cell><Text>
<Segment>Dear <%=person.Title%> <%=person.FirstName%> <%=person.LastName%>,
</Segment></Text></Cell></Row>...");

foreach (Person person in persons){
letters.Add(xperson)
}

如果可能的话,这将是一个救星,因为我不能使用 XElement 和 XAttribute 手动添加节点。我们有多个模板,它们经常更改(即时编辑)。

如果这不可行,你能想出另一种方法,以便我可以使用 XML 模板吗?

看起来在VB中是可能的 http://aspalliance.com/1534_Easy_SQL_to_XML_with_LINQ_and_Visual_Basic_2008.6

最佳答案

这是 VB.NET 独有的功能,称为 XML Literals .它是在 VB 9.0 中添加的。 C# 目前不支持此功能。虽然微软已经声明其intent to bridge the gap在未来的语言之间,尚不清楚此功能是否会很快进入 C#。

你的例子对我来说似乎不太清楚。在解析实际的 XML 之前,您可能希望使用 foreach 循环,因为值绑定(bind)到当前的 Person 对象。例如,这是一个 XML 文字的 VB 示例:

Dim xml = <numbers> 
<%= From i In Enumerable.Range(1, 5)
Select <number><%= i %></number>
%>
</numbers>

For Each e In xml.Elements()
Console.WriteLine(e.Value)
Next

上面的代码片段构建了以下 XML:

<numbers>
<number>1</number>
<number>2</number>
<number>3</number>
</numbers>

然后它将 1, 2, 3 写入控制台。

如果您不能修改 C# 代码来动态构建 XML,那么也许您可以编写遍历 XML 模板并搜索属性和元素中的预定字段然后根据需要设置值的代码。这意味着您必须遍历每个节点中的所有属性和元素,并使用一些 switch 语句来检查模板字段名称。如果您遇到一个模板字段并且您当前正在迭代属性,您将按照设置属性的方式设置它,而如果您正在迭代元素,您将按照设置元素的方式设置它。这可能不是最有效的方法,但却是一种解决方案。

最简单的解决方案是使用 VB.NET。您始终可以将其开发为独立项目,从 C# 项目添加对 dll 的引用,将数据传递给 VB.NET 类并让它返回最终的 XML。

编辑:澄清一下,使用 VB.NET 不会绕过更新模板的需要。它允许您更轻松地将布局指定为 XML 文字。因此,一旦布局发生变化,仍然需要在 VB 中更新代码。您不能从文本文件加载 XML 模板并期望以这种方式绑定(bind)字段。对于允许您一次编写代码并读取不同模板的真正动态解决方案,我的第一个建议更为合适。

关于c# - LINQ to SQL to XML(在 C# 中使用 XML 文字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3846901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com