Какой самый простой способ удалить атрибут узла xml-файла в vb?

#xml #vb6 #msxml

#xml #vb6 #msxml

Вопрос:

Я знаком с использованием библиотеки MSXML2 для чтения XML-файлов. Но есть ли простой способ редактирования конкретного узла. Допустим, у меня есть следующая строка кода, которая выбирает dataroot элемент, имеющий атрибут generated :

 Dim oDoc as MSXML2.DOMDocument
Dim oNode as MSXML2.IXMLDOMNode    

Set oDoc = ... //open xml file here//
Set oNode = oDoc.selectSingleNode("/root/dataroot/[@generated]")
  

Я хочу иметь возможность удалить generated атрибут с выбранного узла и сохранить изменения обратно в исходный файл.

Ответ №1:

Удалите атрибут из коллекции атрибутов рассматриваемого узла:

 oNode.Attributes.removeNamedItem "generated"
  

Ответ №2:

Чтобы удалить атрибут из узла:

 oNode.removeAttribute("generated");
  

Чтобы сохранить изменения:

 oDoc.save("changed.xml")
  

Комментарии:

1. Метод removeAttribute для меня не существует! Я использую MSXML версии 6.0. Есть идеи?

2. Ну, это в документации. Возможно, попробуйте ответ @dunc.

3. @RichardSchneider только что выяснил, что метод removeAttribute доступен, только если oNode объявлен как MSXML2.IXMLDOMElement, а не как MSXML2.IXMLDOMNode

4. Отлично, поэтому измените на Dim oNode as MSXML2.IXMLDOMElement . Возможно, вам придется привести результат SelectSingleNode(). Извините, мой VB очень простой.

5. @RichardSchneider На самом деле я использую vba, и, похоже, приведение выполняется автоматически.