使用以下代码:
Dim x As System.Xml.Linq.XElement = _
<div>
<%= message.ToString() %>
</div>
Dim m = x.ToString()
Run Code Online (Sandbox Code Playgroud)
...如果消息是HTML,则<和>字符将转换为<
和&rt;
.
如何强制它跳过此编码?
我有一个名为Profile的类,它有一些简单的属性,然后它可以有一个ProfileItem的集合,它再次具有一些简单的属性,然后它可以有一个ProfileItem(RECURSION)的集合.
现在我尝试使用VB.NET(3.5)附带的XML Literals生成一个非常简单的保存函数.
我使用的代码如下:
Dim xdoc As XDocument = _
<?xml version="1.0" encoding="utf-8"?>
<profiles>
<%= _
From p In _Profiles _
Select <profile name=<%= p.Name %>>
<%= _
From i In p.GetProfileItems _
Select <item>
<name><%= i.Name %></name>
<action><%= i.Action.ToString %></action>
<type><%= i.Type.ToString %></type>
<arguments><%= i.Arguments %></arguments>
<dependencies>
<%= _
From d In i.GetDependencies _
Select <dependency>
<name><%= d.Name %></name>
</dependency> _
%>
</dependencies>
</item> _
%>
</profile> _
%>
</profiles>
Run Code Online (Sandbox Code Playgroud)
与标记相关的部分应该变为递归,但我不知道它是否以某种方式支持此语法.
我是否应该重写所有避免使用XML Literal来实现递归?
E4X(Ecma-357)是ECMAScript的扩展,它将XML文字添加为第一类基元.这很棒,但只有Mozilla和Adobe的支持(没有V8和IE支持),从Web开发人员的角度来看,E4X几乎已经死了,它必须支持用户使用任何现代浏览器.
在JavaScript中实现XML文字还有哪些其他工作要做?有没有办法在JavaScript中获得类似于XML文字或E4X的东西,任何人都在努力?也许是框架的一些插件?
前几天我遇到过LunaScript(asana.com/Luna),它用类似JavaScript的语言实现了XML文字.这很好,但我可能永远不会在Asana工作,因此永远不会写LunaScript.
我试过这个搜索但似乎无法在任何地方找到答案,所以希望有人在这里可以提供帮助.我想根据计数是否高于1来插入条件XML标记,但我不知道该怎么做.
例如,我有两个像这样的XElements:
<Blob>
<Group>
Stuff 1
</Group>
</Blob>
Run Code Online (Sandbox Code Playgroud)
和
<Blob>
<Group>
Stuff 1
</Group>
<Group>
Stuff 2
</Group>
</Blob>
Run Code Online (Sandbox Code Playgroud)
我希望这最终成为第一个:
<BigGroup>
<Group/>
</BigGroup>
Run Code Online (Sandbox Code Playgroud)
而对于第二个:
<BigGroup>
<Groups>
<Group/>
<Group/>
</Groups>
</BigGroup>
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个中,它们是围绕两个组的标记.
所以,我想在XML Literal中使用这个条件.我试过的是:
Dim groups = If(<Blob>.<Group>.Count > 1, <Groups/>, Nothing)
Dim bigGroup = <BigGroup><%= groups %><%= from e in <Blob>.<Group> select e %><%= groups%></BigGroup>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有没有人有办法在XML Literal中按上述方法执行此操作?
我有一个XElement,我需要通过动态xml文字/嵌入式表达式创建,我需要它继承默认命名空间.通过我尝试的一切,这似乎不可能.有谁知道如何使这项工作?
例如
Imports <xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
Sub CreateXAML()
Dim obj = "Rectangle"
Dim objFill As String = obj & ".Fill"
Dim myXML As XElement = <<%= obj %>><<%= objFill %>>no namespace</></>
Dim myXML2 As XElement = <Path><Path.Fill>inherits namespace</Path.Fill></Path>
MsgBox(myXML.ToString & vbCrLf & myXML2.ToString)
End Sub
Run Code Online (Sandbox Code Playgroud)
第一个,myXML
不是使用默认ns创建的,而第二个myXML2
是,.
在VB.NET中,我可以轻松地将字符串嵌入到XML文字中<xml><%= "my string" %></xml>
.
我该如何嵌入XElement
实例?
我知道我可以在XElement,XNode等类上使用方法,但是如果可能的话我想在XML文字中这样做.
我是一个C#开发人员,他在VB6编写的第一个VB代码中摸索着,所以如果我问一个相当明显的问题,请原谅我.
我决定尝试使用XML Literals为我生成一些XML代码,而不是使用XMLDocument
我有两个问题,第二个问题是由于我无法找出第一个问题而解决的问题.
1:理想的解决方案
我有一个ElementName字典,ElementValue我的KeyValue对我循环,希望动态生成值,但下面的语法死了可怕的死亡
Dim xConnections As XElement
For Each connection As Connection In connections.AsList
For Each kvp As KeyValuePair(Of String, String) In connection.DecompiledElements
xConnections = <Connections> <<%= kvp.Key %>><%= kvp.Value %><\<%=kvp.Key %>> </Connections>
Next
Next
Run Code Online (Sandbox Code Playgroud)
我对T4语法(<%=%>语法)的模糊记忆能够处理更复杂的操作(而不是直接赋值给<%=)和'Response.Write'这样的对象来写输出,但是我不记得细节了.
2:Cludgy解决方法
相反,我想到构建一个StringBuilder对象并将其.ToString分配给XElement,但是也因转换错误而失败.
我更愿意在上面的例子中继续使用我的键值对概念,因为我觉得上面的例子2中的字符串在一起非常讨厌,如果相反,我真的应该回到使用XMLDocument.
任何想法或帮助非常感谢
我将执行XSLT转换,将XML转换为HTML表.这是表格数据,所以这就是我不使用div的原因.;)
无论如何,我需要重复XSLT的一部分,以获得我的一个集合的大小.这是代码的片段......
Dim styleSheet = <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:rh="ReportHub"
exclude-result-prefixes="msxsl"
>
<xsl:output method="html" indent="yes" />
<xsl:template match="rh:Report/rh:Tablix1/rh:Details_Collection">
<xsl:variable name="alternating-row" select="position() mod 2" />
<table class=<%= dataFormatter.formattingTableClass %>>
<xsl:choose>
<xsl:when test="count(rh:Details)=0">
<tr>
<td>There are no items listed for this client</td>
</tr>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="rh:Details">
<tr class=<%= dataFormatter.formattingTRClass %>>
<xsl:variable name="mainrow-position" select="position()" />
<xsl:for-each select="@*">
<%= From x In dataFormatter.dataColumnSettings Select
<xsl:if test="name() != 'colName'">
<xsl:choose>
<xsl:when test="$mainrow-position=1">
<th>
<xsl:value-of select="name()"/>
</th>
</xsl:when>
<xsl:otherwise>
<td>
<xsl:value-of select="."/> …
Run Code Online (Sandbox Code Playgroud) 我正在使用CDATA将所有多行SQL字符串“按原样”存储(感谢一些stackoverflow旧答案),如下所示:
Dim cmd As String = <![CDATA[
INSERT INTO devices
VALUES (
NULL ,
'ONE',
'TWO',
(
SELECT manufacturer_id FROM manufacturers WHERE manufacturer_name = "Bloom"
)
)
]]>.Value()
Run Code Online (Sandbox Code Playgroud)
问题是我需要使用VB变量来解决这个问题。还有另一种方法来代替多个CDATA吗?
<![CDATA[ ...... ]]>.Value() + myVBvar + <![CDATA[ ...... ]]>.Value()
Run Code Online (Sandbox Code Playgroud) xml-literals ×10
vb.net ×8
xml ×3
linq-to-xml ×2
.net-3.5 ×1
e4x ×1
javascript ×1
linq ×1
primitive ×1
recursion ×1
xslt ×1