2015-01-12 2 views
4

Я пытаюсь загрузить rss-данные из Wordpress в базу данных MarkLogic. Данные в виде следующий:Загрузка данных с помощью mlcp - namespace issue

<?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> 

Однако, когда я бег МЛКПА команды, я получаю следующее предупреждение, и данных не включен в базу данных:

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

МЛКПА команды я это:

./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>. Когда я фиксирую, что и МЛКП-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

Это выглядит как МЛКП ошибка для меня. Ваши объявления пространства имен выше уровня элемента item, и они не отправляются на сервер.

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

$ recordloader.sh -DCONNECTION_STRING=xcc://admin:[email protected]:8088 \ 
    -DRECORD_NAME=item -DID_NAME="#AUTO" data.xml 

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

+0

Thanks mblakele. Я вручную создавал вышеуказанные тестовые данные, когда создавал этот поток и пропустил эту строку. Фактические данные хорошо сформированы. Я закончил вручную встраивание пространства имен во все дочерние элементы из более чем 400 элементов ... это было много повторяющейся работы, но, в конце концов, я успешно воспринял данные. Однако было бы неплохо, если бы я мог сделать это с помощью mlcp. – Seong

0

Это похоже на ошибку 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/"> 
+0

Не могли бы вызвать проблемы для элемента 'item'? В исходном XML это было в пустом пространстве имен. – mblakele

+0

Я дам вам попробовать. Спасибо, Джон. – Seong

Смежные вопросы