Загрузка данных с mlcp - проблема с пространством имен

Я пытаюсь загрузить данные rss из Wordpress в базу данных MarkLogic. Данные представлены в виде:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.2/">

<item>
  <wp:post_id>1</wp:post_id>
  <wp:post_title>title 1</wp:post_title>
  <dc:creator>bob</dc:creator>
</item>
<item>
  <wp:post_id>2</title>
  <wp:post_title>title 1</wp:post_title>
  <dc:creator>john</dc:creator>
</item>
</rss>

Однако, когда я запускаю команду mlcp, я получаю следующее предупреждение, и данные не вставляются в базу данных:

WARN mapreduce.ContentWriter: XDMP-DOCNONSBIND: No namespace binding for prefix wp
WARN mapreduce.ContentWriter: XDMP-DOCNONSBIND: No namespace binding for prefix dc

Я использовал команду mlcp:

./mlcp.sh import -host localhost -port 8088 -username admin -password admin -input_file_path  data.xml -mode local -input_file_type aggregates -aggregate_record_element item -aggregate_uri_id post_id -output_uri_prefix /resources/ -output_uri_suffix .xml

Любая идея, как я могу это исправить?

Спасибо!

Сонг

2 ответа

В вашем тестовом примере есть одна некорректная строка: <wp:post_id>2</title>, Когда я исправляю это и mlcp-Hadoop2-1.2-3 с 7.0-4, я вижу одно предупреждение на элемент элемента:

15/01/12 14:16:14 WARN mapreduce.ContentWriter: XDMP-DOCNONSBIND: No namespace binding for prefix wp at /resources/1.xml line 2 15/01/12 14:16:14 WARN mapreduce.ContentWriter: XDMP-DOCNONSBIND: No namespace binding for prefix wp at /resources/2.xml line 2

Это похоже на ошибку mlcp для меня. Ваши объявления пространства имен находятся выше уровня item элемент, и они не отправляются на сервер.

В качестве обходного пути вы можете редактировать XML. Или вы можете попробовать http://marklogic.github.io/recordloader/ примерно так:

$ recordloader.sh -DCONNECTION_STRING=xcc://admin:admin@localhost:8088 \
    -DRECORD_NAME=item -DID_NAME="#AUTO" data.xml

Смотрите http://marklogic.github.io/recordloader/ для других вариантов.

Для меня это тоже похоже на ошибку MLCP. Однако, прежде чем сдаться, попробуйте добавить пространство имен по умолчанию к корневому элементу, так что это будет выглядеть так:

<rss version="2.0" xmlns="http://yournamespace.com/" 
xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.2/">
Другие вопросы по тегам