您可以使用擴展方法來處理IsNot Nothing
檢查以更加流暢的方式:
<Extension()>
Sub SafeTransform(ByVal element As XElement, ByVal transform As Action(Of XElement))
If element IsNot Nothing Then
transform(element)
End If
End Sub
你必須定義轉換爲一個單獨的方法:
Sub Transform(ByVal element As XElement) As XElement
'' # do my transformation
End Sub
這樣稱呼它這個:
doc.<bignode>.<smallnode>.SingleOrDefault.SafeTransform(AddressOf Transform)
你也可以用lambda expressio n:
Dim transform As Action(Of XElement) = Sub(element)
'' # do my transformation
End Sub
doc.<bignode>.<smallnode>.SingleOrDefault.SafeTransform(transform)
這些轉換是子例程而不是函數。如果您想要返回轉換的XElement
對象,則應該仔細查看LINQ to XML。
這是一個愚蠢的LINQ to XML示例:
Dim doc As XDocument =
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Big>
<Small Name="Foo"/>
<Other Name="Bar"/>
</Big>
Dim transformedDoc = new XDocument(_
new XElement(_
doc.Root.Name,
doc.Root.Elements.Select(_
Function(element) _
If(element.Name = "Small", new XElement("Transformed", element.Attributes()), element))))
這是轉換XML:
<Big>
<Transformed Name="Foo"/>
<Other Name="Bar"/>
</Big>
完美的,很多偉大的例子在這裏。 – 2011-04-26 02:40:15