【问题标题】:Using a variable inside a CDATA string in VB.NET?在 VB.NET 的 CDATA 字符串中使用变量?
【发布时间】: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>&gt;</Default>
</Literal>

然后我可以在里面写&gt;非法字符,像这样:

<Code Language="vb"><a><![CDATA[ something ]]$cdataend$</a>.Value ]]></Code>

问题是我不知道这是否可以帮助我解决变量问题...只是我想提供一些想法。

【问题讨论】:

    标签: .net xml vb.net console cdata


    【解决方案1】:

    根据MSDN

    Dim contactName As String = "Patrick Hines" 
    Dim contact As XElement = 
      <contact>
        <name><%= contactName %></name>
      </contact>
    Console.WriteLine(contact)
    

    根据您的情况调整它应该是一件非常简单的事情。

    【讨论】:

    • Thankyou 很有用,但我如何在 CDATA 文字中重现它?
    • 我用不好的视角尝试它,不需要 CDATA,所以你的解决方案是完美的,再次感谢
    • 嗯,不是很简单。 CDATA 将变量表示法视为纯文本。
    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多