Я использую VB 2008 и пытаюсь добавить атрибут xmlns = "mynamespace" в корневой элемент XDocument.
XML-документ создан сторонней организацией, и я загрузил его в объект VB XDocument. Как это происходит, у него нет пространств имен. Я работал над локальной копией и добавил в пространство имен в текстовом редакторе, чтобы я мог использовать XMLToSchema в VB для включения intellisense и т. Д., Согласно инструкциям в видео Бет Масси на MSDN, Теперь остальная часть кода работает, я хочу снова открыть живые документы. Без пространства имен мои XML-литералы не разрешаются.
Я безуспешно пытался добавить свойство XMLNS к корневому тегу, используя несколько методов, и ближе всего я получил следующие три примера кода.
Dim myNS As XNamespace = "urn:nbf:namespacename"
myXML.Element("nameofrootelement").Add(myNS)
^^^^ Пространство имен добавлено как значение корневого элемента, а не как атрибут.
XML.Root.Add(New XAttribute("xmlns", "name"))
^^^^ Сгенерирована ошибка: возникла исключительная ситуация во время выполнения: System.Xml.XmlException - Префикс '' нельзя переопределить из '' в 'name' в том же теге начального элемента.
но
XML.Root.Add(New XAttribute("test", "name"))
^^^^ работает правильно. Предположительно, мне не нравится, когда я пытаюсь установить зарезервированный атрибут? Это пространство имен кажется слишком сложным из-за того, что я использовал Google.
Как мне обойти эту проблему? : D
Спасибо!
Обновление
Спасибо, Энтони.
Думаю, мне нужно лучше понять пространства имен.
Я подумал. ToString
это, затем измени, затем. Parse
это тоже, но я хотел лучшее решение, чтобы оно помогло мне понять это немного лучше! Я все же попробовал это, и, как вы правильно заметили, это влияет и на всех потомков, поэтому он все еще ломается.
Я буду работать с несколькими XML-фидами, созданными разными третьими лицами, и я думаю, для простоты я полностью опущу пространство имен!
Моя собственная функция синтаксического анализа переписывает сторонние каналы в один документ в форме, который затем обрабатывается другой процедурой. Я смогу добавить ns к этому промежуточному фрагменту XML, который поможет при кодировании вторичной функции.
Спасибо!