#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, и, похоже, приведение выполняется автоматически.