我可以逃避VB.NET的XML文字语法中包含的XML字符,比如括号吗?

23 浏览
0 Comments

我可以逃避VB.NET的XML文字语法中包含的XML字符,比如括号吗?

前段时间,我提出了这个问题:VB.NET是否有与C#等价的多行字符串声明语法?在这里,我了解到了VB.NET中的XML字面值。使用这种语法,我能够使用@符号来模拟C#中可用的多行字符串语法。然而,我遇到了一个问题。在文本中放置<>似乎与Visual Studio不兼容。以这段代码为例:

Dim Sql As String =

.Value

我能否以某种方式转义这些括号,或者告诉字面值不要关心它们?

0
0 Comments

XML literals只能用于XML数据。您可以使用&lt;来转义左尖括号,但是如果您不需要真正的XML数据,我建议您根本不要使用XML literals。

谢谢答案,但这绝对不是我想听到的 =\。因为使用XML literal的整个目的是使用@来模拟C#的多行字符串语法,将所有的<替换为&lt;将会失去方便的目的。我最终使用了一个资源文件,它实现了我所需要的功能。

这可能是您使用XML literals的目的 - 但这绝对不是该功能的目的。将其放入资源文件似乎是正确的做法。

0
0 Comments

在VB.NET的XML文本中,如果包含XML字符(如尖括号),需要对其进行转义。下面是一个问题的示例,以及解决方法。

问题:

如何转义在VB.NET的XML文本中包含的尖括号字符?

解决方法:

您需要将文本放在CDATA节中。下面是示例代码:

Dim Sql As String = 
]]>.Value
Console.WriteLine("===")
Console.WriteLine(Sql)
Console.WriteLine("===")

输出结果应该是:

===

===

需要注意的是,CDATA也会保留文本中的前导空格,这就是为什么我从尖括号的文本中删除了它们。

虽然这种方法可能并不合适,但是根据我的问题,我的意图已经非常明确了。如果您认为我的“编码技巧”不合适,那么您不应该以自己的解决方法作为答案来回答我的问题。虽然使用资源文件可能是最佳实践,但这种方法提供了类似C#的多行字符串构造,这是我在使用VB.NET编码时非常想念的。除非有人能给出一个客观的理由,说明这种方法的坏处(性能等),否则我不会使用它。

另一个人回答道,如果您的多行文本需要包含“]]>”时,这种方法将会失败。他的答案明确建议您停止这样做,因此我不明白您如何能说他的答案“导致”您对VB的明显滥用。但是,如果您想继续明知故犯地滥用某些东西,我无法阻止您,显然。至少现在您已经完全意识到您“确实”滥用了这个功能。

0