【发布时间】:2014-01-22 18:54:28
【问题描述】:
假设我有一个带有这样的多行字符串的类:
Public Class HelpSection
' This process name (Example: 'MyProcess.exe')
Public Shared ReadOnly ThisProcess As String =
Process.GetCurrentProcess().MainModule.ModuleName
Public Shared ReadOnly Syntax As String =
<a><![CDATA[
[+] Syntax:
ThisProcess (SWITCH)=(VALUE) (IN FILE)
]]></a>.Value
End Class
现在,当我调用多行字符串时:
Console.WriteLine(HelpSection4.Syntax)
它会打印这个:
ThisProcess (SWITCH)=(VALUE) (IN FILE)
但我想像这样自动打印ThisProcess 变量内容(进程名称):
MyProcess.exe (SWITCH)=(VALUE) (IN FILE)
那么我如何管理 CDATA 文字以动态设置变量内容?
这可能吗?
也许有更好的方法来管理这个? (动态没有硬编码,记住它是通用的)
更新
我正在尝试重现 @Dan-o 解决方案,但在我的情况下当然不起作用,因为它是 CDATA 文字,那么如何转义它或进行必要的修改?:
Dim ProcessName As String = "MyProcess.exe"
Dim Help As XElement =
<Help>
<Process><%= ProcessName %></Process>
<Syntax><a><![CDATA[
[+] Syntax:
<% ProcessName %> (SWITCH)=(VALUE) (IN FILE)
]]></a></Syntax>
</Help>
Console.WriteLine(Help.<Process>.Value)
Console.WriteLine(Help.<Syntax>.Value)
更新 2
在一个简单的 XML 文件(例如,一个 .NET 代码 sn-p)中,我使用我之前学到的这个技巧来对 CDATA 中的字符进行转义:
<Literal Editable="false">
<ID>cdataend</ID>
<ToolTip>Part of the CDATA end tag.</ToolTip>
<Default>></Default>
</Literal>
然后我可以在里面写>非法字符,像这样:
<Code Language="vb"><a><![CDATA[ something ]]$cdataend$</a>.Value ]]></Code>
问题是我不知道这是否可以帮助我解决变量问题...只是我想提供一些想法。
【问题讨论】:
标签: .net xml vb.net console cdata