Como definir dinamicamente o espaço para nome XML local?
-
26-09-2019 - |
Pergunta
Eu tenho vários namespaces XML que expõem o mesmo esquema.
Quero usar uma função que aceite dinamicamente um espaço para nome e aplique os atributos ou as propriedades de acordo com o espaço de nome especificado:
Public Sub ProcessElement(element As XElement, [namespace] As XNamespace)
element.<[namespace]:Property>.Remove()
End Sub
Na verdade, eu quero definir a resulção de namespace com essa função para o argumento especificado.
Olhe para isto artigo, Ele faz exatamente o que eu quero, mas tenho certeza de que, no VB.NET XML literais, há uma maneira muito mais agradável do que fazê -lo da maneira codificada.
Eu sei que posso simplesmente fazer assim:
element.Elements([namespace] + "Property").Remove()
Mas eu estava me perguntando se existe uma maneira de incluir espaços para nome no vb.net incrível .<>
, .@
, ...<>
Atalhos de idiomas.
Solução
Na verdade, encontrei uma solução melhor com o espaço para nome dinâmico sendo recuperado do próprio elemento:
Public Sub ProcessElement(element As XElement)
Dim [namespace] = element.GetDefaultNamespace()
element.<[namespace]:Property>.Remove()
End Sub
Existem também alguns outros métodos de manipulação de namespace no Xelement, por isso é mais fácil torná-lo dinâmico, sem a necessidade de saber quais são os espaços para nome.