如何在使用Linq编写XML时隐藏某些标记?

时间:2011-11-10 16:26:16

标签: xml vb.net linq

我正在使用Linq将XML写入文件,我只想要写入包含值的XML部分(因此没有空标记)。这是我到目前为止所做的:

    Public Class frm
        Public Type As String
        Public RowNumber As Integer
        Public Col1 As String
        Public Col2 As String
  End Class

  Dim bVisCustom2x7 As Boolean

  Dim visform = <VisitorForm>
                      <Tabs>
                           <Tab>
                                  <Type>Custom2x7</Type>
                                  <Order></Order>
                                  <Visibility><%= bVisCustom2x7.ToString %></Visibility>
                                  <%= From frm In frm_list Where frm.Type = "Custom2x7" _
                                      Select _
                                      <Row>
                                          <RowNumber><%= frm.RowNumber %></RowNumber>
                                          <Col1><%= frm.Col1 %></Col1>
                                          <Col2><%= frm.Col2 %></Col2>
                                      </Row>
                                  %>
                             </Tab>
                         <Tabs>
                  <VisitorForm>

因此,例如,如果frm.Col1没有存储值,我怎么能隐藏Col1标签?

谢谢! 毫克

1 个答案:

答案 0 :(得分:0)

这不是最优雅的,但这样的事情会起作用:

<Row>
    <RowNumber><%= frm.RowNumber %></RowNumber>
    <%= If(Not String.IsNullOrEmpty(frm.Col1), <Col1><%= frm.Col1 %></Col1>, Nothing) %>
    <Col2><%= frm.Col2 %></Col2>
</Row>

这个想法是你可以随时放一个&lt;%= =&gt;表达式块返回XElement或Nothing,只有在返回节点时才会插入它。