Come impostare dinamicamente namespace XML locale?
-
26-09-2019 - |
Domanda
Ho diversi namespace XML che espongono lo stesso schema.
Voglio usare una funzione che accetta in modo dinamico uno spazio dei nomi e applica gli attributi o le proprietà in base allo spazio dei nomi specificato:
Public Sub ProcessElement(element As XElement, [namespace] As XNamespace)
element.<[namespace]:Property>.Remove()
End Sub
Io in realtà voglio impostare la resultion namespace withing questa funzione per l'argomento dato.
questo articolo , che fa esattamente quello che ho vogliono , ma sono sicuro che in VB.NET XML letterali c'è un modo più bello più che farlo la strada hardcoded.
So che posso semplicemente fare in questo modo:
element.Elements([namespace] + "Property").Remove()
Ma mi chiedevo se esiste un modo per includere spazi dei nomi in VB.NET sorprendente .<>
, .@
, scorciatoie lingua ...<>
.
Soluzione
In realtà ho trovato una soluzione migliore avendo lo spazio dei nomi dinamico viene recuperato da dell'elemento stesso:
Public Sub ProcessElement(element As XElement)
Dim [namespace] = element.GetDefaultNamespace()
element.<[namespace]:Property>.Remove()
End Sub
Ci sono anche un paio di altri metodi namespace-manipolazione del XElement, così è più facile per renderlo reale dinamica, senza nemmeno bisogno di sapere quali sono i namespace sono.