Я имею мнение, что ни из чего не нужно выходить во время входа, только на выводе. Так как (большую часть времени) Вы не можете предположить, что знаете, куда те данные идут. Пример, если у Вас есть форма, которая берет данные, которые позже появляются в электронном письме, которое Вы отсылаете, Вам нужен различный выход (иначе, злонамеренный пользователь мог переписать Ваши почтовые заголовки).
, Другими словами, можно только выйти в самый последний момент, данные "оставляют" приложение:
Для движения короткий:
особенно № 3 произойдет, если Вы выйдете из данных на входном слое (или Вам нужен к de-escape он снова, и т.д.).
пз: я буду второй совет для того, чтобы не использовать magic_quotes, те - чистое зло!
Вы можете просто поместить оператор If внутри XML-литерала. Кроме того, он достаточно умен, чтобы вывести IEnumerable (Of XElement)
, просто сославшись на переменную внутри <% =%>
.
Вот код.
Sub Main()
Dim SingleGroup = <Blob>
<Group>Stuff 1</Group>
</Blob>
Dim TwoGroups = <Blob>
<Group>Stuff 1</Group>
<Group>Stuff 2</Group>
</Blob>
Dim BigGroup1 = BigGroup(SingleGroup.<Group>)
Dim BigGroup2 = BigGroup(TwoGroups.<Group>)
Console.WriteLine(BigGroup1)
Console.WriteLine()
Console.WriteLine(BigGroup2)
Console.ReadLine()
End Sub
Function BigGroup(ByVal groups As IEnumerable(Of XElement)) As XElement
Dim result = <BigGroup>
<%= If(groups.Count > 1, _
<Groups><%= groups %></Groups>, _
groups.SingleOrDefault) %>
</BigGroup>
Return result
End Function
Результат будет следующим: :
<BigGroup>
<Group>Stuff 1</Group>
<BigGroup>
<BigGroup>
<Groups>
<Group>Stuff 1</Group>
<Group>Stuff 2</Group>
</Groups>
</BigGroup>