VB.NET XML文本解析
如果我有存储在数据库,文件中的文本,资源并不重要:VB.NET XML文本解析
<code><%= Integer.MaxValue %></code>
有没有办法做到这一点:
Dim el As XElement = XElement.Parse({variable containing text above})
,并有它评估表达式Integer.MaxValue?
简短的回答是否定的。编译器知道如何解析它,并用你在C#代码中看到的东西替换你的源代码。
测试代码:
Dim source As String = "a,s,d,f"
Dim ar As String() = source.Split(","c)
Dim el As XElement = <code>
<%= From s In ar Select s + "22" %>
</code>
反射码:
Dim VB$CG$t_i4$S0 As Integer
Dim ar As String() = "a,s,d,f".Split(New Char() { ","c })
Dim VB$t_ref$S0 As New XElement(XName.Get("code", ""))
VB$t_ref$S0.Add(ar.Select(Of String, String)(New Func(Of String, String)(AddressOf Test._Lambda$__1)))
Dim el As XElement = VB$t_ref$S0
不容易。最接近你可以使用CodeDOM生成一些代码 - 你需要生成一个包装模块和一个带有Return
的Function
,然后将表达式从数据库中输入到Return
- 编译它(并检查编译错误),运行它并查看结果。总而言之,这将非常缓慢。
找到它你知道任何文章或资源,可以帮助人想要尝试这样的事情吗? – CoderDennis 2010-01-30 06:45:03
http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx涵盖了CodeDOM。但是,它并没有特别涵盖XML文字,因为这是一个VB特有的功能,所以您需要使用文字表达式 - http://msdn.microsoft.com/en-us/library/system.codedom。 codesnippetexpression.aspx – 2010-01-30 08:55:26
感谢您发布最终答案。你介意说你是如何学到这些的? – 2009-09-04 20:14:17
我用反射器反编译我的程序集,看看编译器用我的代码做了什么。你可以在http://www.red-gate.com/products/reflector/ – epitka 2009-09-04 20:17:07