• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

изменить значение в Xml файле

  • Автор темы pbnoob
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
NotesSAXParser мне не подойдет, теги в дереве могут повторятся. Да и так глянул, у NotesSAXParser есть только метод Output, значит он пишет в другой файл все узлы? А мне надо замена pyfxtybq, а не генерация по всем узлам нового xml.
чтож вы за человек такой...
писать все необязательно, пишите только те (и стрим сами создайте к-л), в пример хэлпа все подробно расписано
только там выводят сообщения (в том числе), а у вас будет запись в стрим
link removed
Source.Output (...) и есть запись в файл, кот. назначили, файл в примере txt, вам нужно формировать xml (самому)
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
т.о. можете тупо записывать все ноды в файл, а на нужной ноде сделать то - что задумали
чтобы не заморачиваться с ручным управлением можно использовать XSLT - шаблон не должен быть сложным
 

seoman2

Green Team
17.02.2010
506
1
BIT
58
можете тупо записывать все ноды в файл, а на нужной ноде сделать то - что задумали
Я как раз так не хотел делать, думал можно изменить исходный поток, а не все ноды по новой записать. Изменить в дереве элементы, а потом как-то по новой
Call domParser.Serialize( )
domParser.Process
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
думал можно изменить исходный поток, а не все ноды по новой записать
SAX - readonly, из этого и экономия памяти и скорость
XSLT - может менять часть данных по шаблону
а потом как-то по новой
не понял - что хотите сделать? Нужен был файл, исходный фай заменить нельзя, можно получить новый
DOM делает все в памяти и в память возвращает результат
 

seoman2

Green Team
17.02.2010
506
1
BIT
58
Есть файл xml
<root>
<teg1>текст</teg1>
<teg2></teg2>
</root>
Надо в teg2 вставить текст 2.
Я xml через поток в дом дерево загоняю. Теперь буду выгружать в другой дом, потом сохранять как файл xml.

А чтобы генерить новую xml - использовать outputStream.WriteText ? писать в поток <teg2>мой текст 2</teg2>

Еще не доконца понимаю что именно делают методы:
Call domParser.Serialize( ) - заменяет то что в out на input у CreateDOMParser?
domParser.Process - разбор XML ? Что именно разбирается?
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
Надо в teg2 вставить текст 2.
по какому правилу (или просто - во все теги2 вставить текст2)
зачем строить дерево, чтобы потом по нему бежать, чтобы потом его изменить, чтобы в конце записать?
получим 3-и прохода по одним данным (бешенный оверхед)

Просто - бежим и пишем что есть, а в случае с нужным тегом - пишем что надо. ТАК РАБОТАЕТ SAX
и проход только один
вносит изменения в конечное дерево
разбирает дерево и там можно внести изменения (по событию callback ф-ция), которые - см выше
 

seoman2

Green Team
17.02.2010
506
1
BIT
58
У меня в UI есть документ, я в некий шаблонный XML записываю в определенные теги значения с этого лотусового дока.
В итоге заработало как надо:

Set domParser=session.CreateDOMParser(strm, outputStream)
domParser.Process
Call XMLTree(docNode, outputStream)
Call domParser.Serialize( )

вносит изменения в конечное дерево
Не оч понимаю какие изменения. К примеру, внесу я в тег значение
docNode.FirstChild.NodeValue = "123"
Так он сохраняется в дереве.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!