Как написать относительный путь Unix в XML - PullRequest
0 голосов
/ 17 апреля 2009

когда я запускаю процесс в Unix, путь указывает на / abc / 1/2/3

Я устанавливаю свойство в xml для процесса, который выполняется по пути. Одно свойство у меня

< property name="log.path" value="/abc/4/5"/ >

Проблема в том, что я не могу указать абсолютный путь ("/ abc / 1/2/3"), как указано выше. я должен дать что-то вроде "../../../4/5".

< property name="log.path" value="../../../4/5"/ >

мои вопросы, почему вышеупомянутая оценка не работает? в настоящее время он рассматривает путь, указанный в значении как константу.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2009

XML - это просто стандартизированный формат для хранения структурированных данных ... он ничего не указывает о том, какие атрибуты элемента означают , поскольку он не знает, что (например) этот атрибут семантически является путем типа Unix .

Так что на самом деле речь идет не о XML, а о том, как приложение, читающее XML, обрабатывает указанные пути. Например (как уже упоминалось), какой каталог он считает текущим, повлияет на интерпретацию относительных путей ... при условии, что прикладные пути действительно правильно анализируются относительными путями.

0 голосов
/ 20 апреля 2009

Хорошо, давайте проанализируем это.

когда я запускаю процесс в Unix, путь указывает на / abc / 1/2/3

Теперь исполняемый файл для процесса существует в / abc / 1/2/3 или является / abc / 1/2/3 текущим рабочим каталогом для вашего процесса?

Если текущим рабочим каталогом для процесса является / abc / 1/2/3 , и процесс считывает этот XML-файл и пытается напрямую использовать путь с системным вызовом, таким как open тогда нотация относительного пути .. / .. / .. / 4/5 должна работать. Однако, если путь / abc / 1/2/3 не является текущим рабочим каталогом, а просто местом расположения исполняемого файла, то .. / .. / .. / 4/5 не может работать, поскольку текущий рабочий каталог не / abc / 1/2/3 , а относительные пути всегда работают с текущим рабочим каталогом.

Убедитесь, что действительно ли / abc / 1/2/3 является текущим рабочим каталогом, а не только местом для исполняемого файла.

0 голосов
/ 17 апреля 2009

Выезд http://en.wikipedia.org/wiki/Path_(computing)

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

Может быть разрешено, если вы предоставите более подробную информацию

Tanmay

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