Как динамически установить локальное пространство имен XML?
-
26-09-2019 - |
Вопрос
У меня есть несколько пространств имен XML, которые подвергают той же схеме.
Я хочу использовать функцию, которая динамически принимает пространство имен и применяет атрибуты или свойства в соответствии с указанным пространством имен:
Public Sub ProcessElement(element As XElement, [namespace] As XNamespace)
element.<[namespace]:Property>.Remove()
End Sub
На самом деле я хочу установить результативность пространства имен, с помощью этой функции к данному аргументу.
смотреть на это статья, он делает именно то, что я хочу, но я уверен, что в VB.NET XML литералы есть гораздо лучше, чем делать это жесткодируемым образом.
Я знаю, что могу просто сделать это так:
element.Elements([namespace] + "Property").Remove()
Но мне было интересно, есть ли способ включить пространства имен в VB.NET Удивительно .<>
, .@
, ...<>
Языковые ярлыки.
Решение
Я на самом деле нашел лучшее решение, имеющее извлечение динамического пространства имен из самого элемента:
Public Sub ProcessElement(element As XElement)
Dim [namespace] = element.GetDefaultNamespace()
element.<[namespace]:Property>.Remove()
End Sub
В XElement также есть несколько других методов манипулирования пространством имен, поэтому легче сделать его реальным динамичным, даже не нужно знать, какие пространства имен являются.