найти и заменить все элементы xml в теге

Я редактирую xml-файл в notepad++, и мне было интересно, можно ли найти и заменить элементы в определенных тегах. Причина, по которой я спрашиваю об этом, заключается в том, что я редактирую документ lectora и хочу изменить координаты x и y в текстовых полях, но только в определенных главах, и если я найду и заменю что-то, он найдет и заменит все его экземпляры для весь документ, и мне нужно только для определенной главы/тега. Любая помощь будет оценена, спасибо

<chapter id="46" parent="1">
<name>changing</name>

<point>
<x>65</x>
<y>90</y>
</point>

</chapter>

<chapter id="48" parent="1">
<name>nonchanging</name>
<point>
<x>65</x>
<y>90</y>
</point>

</chapter>

person Leon Hennessy    schedule 16.05.2013    source источник
comment
Это можно сделать, но сначала — не могли бы вы предоставить образец своего XML и показать, какие элементы вам нужно заменить, а также правила, которые определяют их замену?   -  person AdamL    schedule 16.05.2013
comment
Привет, спасибо за ответ. В основном я хотел бы найти и заменить все экземпляры значений x в теге идентификатором главы 46, не затрагивая значения x в идентификаторе главы 48. Я добавил образец XML выше.   -  person Leon Hennessy    schedule 17.05.2013
comment
Кажется, что это было бы проще, используя xpath   -  person Luis    schedule 17.05.2013
comment
Как ты это делаешь, @Луис?   -  person Arlen Beiler    schedule 01.02.2014


Ответы (1)


Это должно сделать это:

Найти то, что:

(<chapter id="(?!46).+<x>)(\d+)(</x>.+</chapter>)

Заменить:

\1YOURNUMBER\3

Также установите флажок «. соответствует новой строке».

Но имейте в виду, что это не очень хорошее решение, и лучше используйте его только в какой-то специальной работе, где вы можете проверить результаты. Как предположил Луис, xPath — это то, что нужно для таких вещей.

person AdamL    schedule 17.05.2013