我是一个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 =<<%= kvp.Key %>><%= kvp.Value %><\<%=kvp.Key %>> Next Next
我对T4语法(<%=%>语法)的模糊记忆能够处理更复杂的操作(而不是直接赋值给<%=)和'Response.Write'这样的对象来写输出,但是我不记得细节了.
2:Cludgy解决方法
相反,我想到构建一个StringBuilder对象并将其.ToString分配给XElement,但是也因转换错误而失败.
我更愿意在上面的例子中继续使用我的键值对概念,因为我觉得上面的例子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 =<%= From elem In Elements _ Select <<%= elem.Key %>><%= elem.Value %>> %>
空结束标记>
是vb编译器正确构造一个xml元素所需的全部内容,该元素的名称是从<%= %>
块内的值生成的.
调用xConnections.ToString呈现以下内容:
Value1 Value2 Value3