我是一名 C# 开发人员,他在自 VB6 以来编写的第一个 VB 代码中摸索不前,所以如果我问的是一个相当明显的问题,请原谅我。
我决定尝试使用 XML Literals 为我生成一些 XML 代码,而不是使用 XMLDocument
我有两个问题,第二个问题是关于解决方法的,因为我无法弄清楚第一个问题。
1:理想方案
我有一个包含 ElementName、ElementValue 的字典,我正在循环其 KeyValue 对以希望动态生成值,但是以下语法死得很惨
Dim xConnections As XElement
For Each connection As Connection In connections.AsList
For Each kvp As KeyValuePair(Of String, String) In connection.DecompiledElements
xConnections = <Connections> <<%= kvp.Key %>><%= kvp.Value %><\<%=kvp.Key %>> </Connections>
Next
Next
我对 T4 语法(<%=%> 语法)能够处理更复杂的操作(而不是直接赋值给 <%=)和一个“Response.Write”之类的对象来写输出有模糊的内存到,但我不记得细节了。
2:笨拙的解决方法
相反,我考虑构建一个 StringBuilder 对象并将其 .ToString 分配给 XElement,但这也因转换错误而失败。
我更愿意在上面的示例 1 中继续使用我的键值对概念,因为我觉得像上面的示例 2 那样将一个字符串放在一起是相当讨厌的,如果相反,我真的应该回到使用 XMLDocument。
非常感谢任何想法或帮助
最佳答案
VB.NET XML Literals 非常强大,但通常向它们添加一些 LINQ 会让它们变得非常棒。此代码应该完全符合您的要求。
Dim Elements = New Dictionary(Of String, String)
Elements.Add("Key1", "Value1")
Elements.Add("Key2", "Value2")
Elements.Add("Key3", "Value3")
Dim xConnections = <Connections>
<%= From elem In Elements _
Select <<%= elem.Key %>><%= elem.Value %></> %>
</Connections>
空的结束标签 </>
是 vb 编译器正确构造其名称从 <%= %>
中的值生成的 xml 元素所需的全部内容 block 。
调用 xConnections.ToString 呈现以下内容:
<Connections>
<Key1>Value1</Key1>
<Key2>Value2</Key2>
<Key3>Value3</Key3>
</Connections>
关于xml - 在 XML 文字中使用字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50995/