Wie dynamisch lokalen XML-Namespace gesetzt?
-
26-09-2019 - |
Frage
Ich habe mehr XML-Namespaces, das das gleiche Schema aus.
Ich möchte eine Funktion verwenden, die dynamisch einen Namespace akzeptiert und wendet die Attribute oder die Eigenschaften nach dem angegebenen Namespace:
Public Sub ProcessElement(element As XElement, [namespace] As XNamespace)
element.<[namespace]:Property>.Remove()
End Sub
Ich mag eigentlich den Namespace resultion withing diese Funktion auf das gegebene Argument setzen.
Lesen Sie dieser Artikel, er tut genau das, was ich will , aber ich bin sicher, dass in VB.NET XML-Literale gibt eine viel schönere Art und Weise ist, als es die hartcodierte Weise.
Ich weiß, dass ich es einfach so machen kann:
element.Elements([namespace] + "Property").Remove()
Aber ich frage mich, ob es einen Weg gibt Namespaces in VB.NET erstaunliche .<>
enthalten, .@
, ...<>
Sprachkombinationen.
Lösung
Ich fand eine bessere Lösung des dynamischen Namensraum aus dem Element abgerufen werden selbst:
Public Sub ProcessElement(element As XElement)
Dim [namespace] = element.GetDefaultNamespace()
element.<[namespace]:Property>.Remove()
End Sub
Es gibt auch ein paar andere Namespace-manipulierenden Methoden in der XElement, so dass es einfacher ist, es wirklich dynamisch zu machen, ohne selbst müssen wissen, was die Namensräume sind.