изменение XML-файла - PullRequest
       7

изменение XML-файла

0 голосов
/ 31 октября 2009

Если у меня есть XML-файл, который выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<installerDefaults pathToAllUsers="C:\ProgramData\prog">
    <databaseConnector>
        <localDatabasePath>C:\ProgramData\prog\tracking.db3</localDatabasePath>
    </databaseConnector>
    <defaultLocales>
        <installerDefaultLocale>en-US</installerDefaultLocale>
    </defaultLocales>
    <directories>
        <languageDataBasePath>C:\ProgramData\prog\Content</languageDataBasePath>
    </directories>
</installerDefaults>

И я хочу изменить строку «C: \ ProgramData \ prog» на что-то другое во всех трех случаях, как я могу изменить ее, чтобы я внес только одно изменение, а оно - все три? На самом деле, было бы лучше, если бы я мог просто изменить «прогу» и оставить все остальное.

Я не использую какой-либо язык, я просто редактирую файл в текстовом редакторе. Может быть, то, что я спрашиваю, невозможно. Разве нет способа объединить строки, псевдо-xml, например

s = "C:\ProgramData\abcdefg\"

<installerDefaults pathToAllUsers = s>
<localDatabasePath>s + "tracking.db3"</localDatabasePath>
<languageDataBasePath>s + Content</languageDataBasePath>

Поэтому, когда программа, которая читает его, ищет значение localDatabasePath, она получает C: \ ProgramData \ abcdefg \ tracking.db3

Это возможно?

Ответы [ 2 ]

1 голос
/ 31 октября 2009

Все зависит от того, насколько строгим ты хочешь быть. Простой поиск / замена в любом текстовом редакторе сделает работу в этом случае. Языки сценариев управления текстами, такие как sed или perl, позволят вам сделать то же самое из командной строки.

Проблема с этими подходами состоит в том, что они не будут легко распространяться на более общие проблемы. Подумайте об изменении

C:\ProgramData\directories\Content

до

C:\ProgramData\wibble\Content

слишком легко также случайно изменить тег XML

<directories> 

тоже. В общем случае для преобразования XML требуются инструменты, которые понимают XML.

Следовательно, вам действительно нужно что-то, понимающее XML, и именно здесь XSLT можно использовать. Вы можете получить процессор командной строки из здесь и здесь есть учебные пособия для XSLT здесь .

Это довольно сложный процесс обучения, но если вы пытаетесь развить навыки, это настраивает вас на решение более сложных проблем с XML-манипуляциями.

0 голосов
/ 31 октября 2009

Посмотрите на сущности XML; например как показано на этой странице учебника

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...