Как получить имя элемента переменной при использовании XML-литералов? Это нормально, когда я не пытаюсь использовать пространство имен, но когда я это делаю, он терпит неудачу.VB.NET XML Literal Variable Element Name с пространством имен
Это прекрасно работает:
Dim elementName As String = "tc"
Dim tc As XElement = <<%= elementName %>/>
и возвращается:
<tc />
Но если я пытаюсь добавить 'ш:' пространства имен, то это не:
Dim tc As XElement = <w:<%= elementName %>/>
Или это:
Dim tc As XElement = <<%= "w:" & elementName %>/>
Так может кто-нибудь сказать мне, как добраться до:
<w:tc />
переменно, используя XML-литералов?
UPDATE:
Спасибо Мартину за ваш ответ, это было как раз то, что я искал. Чтобы уточнить, в корневом документе, над которым я работал, уже было пространство имен, в котором я нуждался, я просто добавляю/редактирую существующий документ (документ wordprocessingml).
Я думаю, это самый простой и элегантный способ решения этой проблемы:
Dim tc as XElement = <<%= Me.Root.GetNamespaceOfPrefix("w") + elementName %>/>
Где Me
это класс, который наследует XDocument.
Хотя принято, это не так, как ожидается, XML, которые будут рассматриваться в .NET (= вы не максимизируя огромные ОО-возможности). Вы должны лучше полагаться на соответствующие классы/свойства. Например: Dim tc As XElement = Новый XElement (elementName); или используйте класс XNamespace для пространств имен. – varocarbas
Хорошо, тогда в чем смысл синтаксиса XML-литерала, если я даже не могу добавить пространство имен? –
вам нужно добавить uri, а не код пространства имен, то есть «uri: my-uri» & elementName – tolanj