xml - 在 XML 文字中使用字符串

标签 xml vb.net xml-literals

我是一名 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/

相关文章:

c# - 如何仅将大型 xml 文件的一部分反序列化为 C# 类?

vb.net - 条件 XML 文字

xml - 如何根据选择条件将节点集存储在变量中

.net - XMLDocument dispose - 为什么它不支持 IDisposable?

VB.Net ListView 如果宽度 = 0 则限制列调整大小

vb.net - VB.NET 中的 DLL 插件系统

vb.net - 带有 Linq 语句的 XML 文字

xml - 如何在 Scala XML 输出中生成整数文字作为属性?

xml - 将 Nokogiri 文档转换为 Ruby 哈希

vb.net - vb.net 中的 LINQ 与数据集