Описание проблемы: Считайте файл XML, перейдите к определенному узлу (элементу), если у него нет определенного объявления пространства имен, добавьте требуемое объявление пространства имен и запишите файл.
Мне нужно сделать это на C ++, используя Microsoft MSXML DOM API. Свойство namespaceURI в COM-объекте IXMLDOMNode доступно только для чтения в соответствии с этим msdn reference . Цените любые обходные пути.
Редактировать : я потратил довольно много времени на обходной путь: создайте новый одноуровневый узел в том же документе с нужным мне пространством имен, затем переместите все дочерние элементы исходного узла в этот новый узел, затем удалите исходный узел. Что ж, это не работает, потому что дочерние узлы сохранят то пространство имен по умолчанию, которое у них было раньше.
И затем эта простая идея поразила меня, и она сработала, но я не уверен, что она укусит меня в будущем: просто создайте атрибут «xmlns» для элемента, задав ему желаемое значение пространства имен! Есть комментарии?