CMD команда или сценарий для вставки строки перед закрытием тега «>» для каждой строки, которая имеет определенное имя тега - PullRequest
0 голосов
/ 11 апреля 2019

Я хотел бы найти более простое решение для вставки строки в конце тега (перед закрывающим тегом) в XML-файл в Windows.
Это огромный XML-файл с более чем 4000 строками.
Почти во всех строках есть тег managedObject, и в конце я хотел бы вставить строку: operation="create".
Так это выглядит так:

<managedObject class="blabla" ... id="1234">

.. и хочу сделать так:

<managedObject class="blabla" ... id="1234" operation="create">

Как я уже сказал, XML-файл огромен, и не все строки имеют теги managedObject. Я только хочу вставить строку, где находятся теги managedObject.

До сих пор я делал это вручную ... но это занимает много времени ..

1 Ответ

0 голосов
/ 11 апреля 2019

Я в целом согласен с @montonero, что способ сделать это с помощью XML-инструментов -
... но быстрый взлом вещей с помощью RegEx может сэкономить время.

Вот этот вкладыш PowerShell one, использующий RegEx'ы с обходными путями должен делать (при условии кодировки utf8):

(gc .\sample.xml -raw -enc utf8) -replace '(?<=\<managedobject)(?!.*?operation="create")([^\>]*?)\>','$1 operation="create">'|Set-Content new_sample.xml -enc utf8

Где

  • (?<=\<managedobject) - утверждение с нулевой длиной, совпадающее с началом тега.
  • (?!.*?operation="create") является отрицательным прогнозом нулевой длины, гарантирующим, что не вставляется operation="create" дважды
  • ([^\>]*?) - это группа захвата, которую нужно сохранить перед вставкой.

Используется в примере файла, содержащего приведенные выше вопросы:

I would like to find an easyer solution in inserting a string at the end of a tag (before the closing tag) in a xml file in windows.
This is a huge XML file with over 4000 lines.
At almost all lines there is an managedObject tag, and at the end i would like to insert a string: operation="create".
So it looks like this:

<managedObject class="blabla" ... id="1234" operation="create">

..and want to make it like this:

<managedObject class="blabla" ... id="1234" operation="create">

As I said the XML file is huge, and not all lines have managedObject tags. I only want to insert the string were the managedObject tags are.

Up till now i did it manually..but it takes a lot of time..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...