2014-10-22 4 views
1

Я пытаюсь извлечь конкретный раздел документа HTML из сценария оболочки bash и использовал xmlstarlet sel, но я не могу заставить его возвращать фактический HTML, а не только текстовые значения из HTML-теги.Использование xmlstarlet для извлечения HTML

Я пытаюсь командную строку следующим образом:

xmlstarlet sel -t -m "//div[@id='mw-content-text']" -v "." wiki.html 

Но это дает только текст, без HTML/XML-разметки. Для информации я пытаюсь экспортировать эти данные в формат HTML вне экземпляра mediawiki, из которого он пришел.

Если xmlstarlet является неправильным инструментом, любые предложения по другим инструментам также с благодарностью принимаются!

+0

Try 'xmllint' с опцией' --html', чтобы включить его HTML-парсер. – Cyrus

+0

Это то, что я пытался раньше, но версии libxml в Centos, похоже, не поддерживают xpath, поэтому я начал искать альтернативы. – asc99c

+0

Вы действительно хотите создать свой собственный инструмент для экспорта HTML из MediaWiki? Современное решение - parsoid + mwoffline https://sourceforge.net/p/kiwix/other/ci/master/tree/mwoffliner/; с более старыми версиями вы можете попробовать расширение dumpHTML. – Nemo

ответ

3

-v--value-of который является содержимым тегов. Вы должны использовать -c или --copy-of, чтобы получить сами теги.

xmlstarlet sel -t -m "//div[@id='mw-content-text']" -c "." wiki.html 

Или просто

xmlstarlet sel -t -c "//div[@id='mw-content-text']" wiki.html 
+0

Ничего себе, да, это сработало отлично. Благодаря! – asc99c