我可以逃避VB.NET的XML文字语法中包含的XML字符,比如括号吗?
我可以逃避VB.NET的XML文字语法中包含的XML字符,比如括号吗?
前段时间,我提出了这个问题:VB.NET是否有与C#等价的多行字符串声明语法?在这里,我了解到了VB.NET中的XML字面值。使用这种语法,我能够使用@
符号来模拟C#中可用的多行字符串语法。然而,我遇到了一个问题。在文本中放置<
或>
似乎与Visual Studio不兼容。以这段代码为例:
我能否以某种方式转义这些括号,或者告诉字面值不要关心它们?
在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的明显滥用。但是,如果您想继续明知故犯地滥用某些东西,我无法阻止您,显然。至少现在您已经完全意识到您“确实”滥用了这个功能。