2013-04-26 2 views
0

Мне нужно выполнить поиск во многих файлах, но не хочу записывать их имена в запросе. В моем случае мне нужно запросить 500 XML-файлов с разными именами. Итак, Есть ли способ.Загрузка нескольких файлов XML (MarkLogic)

я могу сказать:

for $x in doc("ALL XML files under a specific directory") 
return $x/Something 

Я использую Ubuntu и MarkLogic5

ответ

7

Если ваши документы на самом деле в «каталоге» ... (т.е. они имеют форму URL, как " /a/b/c.xml «), то вы можете использовать xdmp:directory()

http://docs.marklogic.com/xdmp:directory

for $x in xdmp:directory("https://stackoverflow.com/a/b/") 
return $x/something 
+0

Спасибо за ваш ответ! но когда я попробую для $ x в xdmp: directory ("/ home/user/desktop/xml /") return $ x Я получаю «ваш запрос возвратил пустую последовательность» – Judavi

+1

@Judavi Это выглядит как путь к файловой системе; документы, загруженные в Marklogic? –

1

Ответ Mads правильный, если под «directory» вы имеете в виду каталог Marklogic. Если вы имеете в виду путь к файловой системе, то ответ заключается в том, что прежде чем Marklogic сможет обрабатывать документы, вам необходимо загрузить их в базу данных.

Для этого посмотрите порт 8000 на машине ML (localhost?) И выберите опцию «загрузить контент» на этой странице. Это позволит вам выбрать каталог файловой системы для загрузки документов.

Изменив «параметры документа» перед загрузкой, вы также можете указать, сколько (если есть) пути этой файловой системы должно поддерживаться как часть URI документа в Markloic и назначать коллекцию всем загруженным документам. Я бы посоветовал вам сделать это; они упростят обращение ко всем этим документам только после их загрузки (либо для запроса, либо удаления после того, как вы закончите с ними.)

После того, как документы загружены, вы можете запросить их, используя xdmp:directory(), fn:collection() или любой другой другой метод, который вам нравится.

0

От Marklogic вы можете посмотреть файловую систему, если у пользователя есть соответствующие разрешения. Вы могли бы загружать данные в marklogic таким образом, но разве вы не должны запрашивать данные таким образом.

Вот пример и может помочь вам найти то, что вы ищете.

declare namespace dir = "http://marklogic.com/xdmp/directory"; 

    for $file in xdmp:filesystem-directory("/home/user/desktop/xml/")/dir:entry 

    return xdmp:filesystem-file($file/dir:filename)