Эквивалент Grep и Sed для обработки командной строки XML

Предположим, что вы выполняете итерации через некоторые объекты DOM, и вы хотите найти и уловить элемент с определенным ID

<div id="myDiv">
    <div id="fo"><div>
    <div id="bar"><div>
</div>

. Вы можете либо написать что-то вроде поиска

$('#myDiv').find('#bar')

Обратите внимание, что если бы вы использовали селектор классов, метод find вернет все соответствующие элементы.

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

<div id="myDiv">
    <div id="fo"><div>
    <div id="bar"><div>
    <div id="fo1"><div>
    <div id="bar1"><div>
    <div id="fo2"><div>
    <div id="bar2"><div>
</div>

$('#myDiv div').each(function() {
   if($(this).attr('id') == 'bar1')
       //do something with bar1
});

Тот же код может быть легко изменен для селектора классов.

<div id="myDiv">
    <div class="fo"><div>
    <div class="bar"><div>
    <div class="fo"><div>
    <div class="bar"><div>
    <div class="fo"><div>
    <div class="bar"><div>
</div>

$('#myDiv div').each(function() {
   if($(this).hasClass('bar'))
       //do something with bar
});

Я рад, что вы решили свою проблему с помощью index (), что когда-либо работает для вас. Я надеюсь, что это поможет другим с той же проблемой. Приветствия:)

144
задан Joseph Holsten 18 September 2008 в 11:36
поделиться

7 ответов

Я нашел, что xmlstarlet довольно хорош в этом виде вещи.

http://xmlstar.sourceforge.net/

Должен быть доступным в большинстве репозиториев дистрибутива, также. Вводное учебное руководство здесь:

http://www.ibm.com/developerworks/library/x-starlet.html

101
ответ дан Russ 18 September 2008 в 11:36
поделиться

XQuery мог бы быть хорошим решением. Это (относительно) легко изучить и является стандартом W3C.

я рекомендовал бы XQSharp для процессора командной строки.

2
ответ дан Oliver Hallam 18 September 2008 в 11:36
поделиться
  • 1
    " победите устанавливают git+github.com/martinpaljak/M2Crypto.git" сбои с " ValueError: (' Ожидаемая спецификация версии in' ' git+github.com/martinpaljak/M2Crypto.git' ' at' ' +github.com/martinpaljak/M2Crypto.git') " в моей системе Ubuntu 10.04. – Paul Whipp 13 June 2013 в 07:45

Некоторые многообещающие инструменты:

  • nokogiri: парсинг DOMS HTML/XML в рубине с помощью XPath & селекторы CSS

  • hpricot: удержанный от использования

  • fxgrep: Использует его собственный подобный XPath синтаксис для запросов документов. Записанный в SML, таким образом, установка может быть трудной.

  • LT XML: инструментарий XML получен из инструментов SGML, включая sggrep, sgsort, xmlnorm и другие. Использует его собственный синтаксис запроса. Документация очень формальна. Записанный в C. LT XML 2 требует поддержки XPath, XInclude и других стандартов W3C.

  • xmlgrep2: простой и мощный поиск с XPath. Записанный в Perl с помощью XML:: LibXML и libxml2.

  • XQSharp: Поддержки XQuery, расширение XPath. Записанный для Платформы.NET.

  • xml-coreutils: инструментарий Laird Breyer, эквивалентный GNU coreutils. Обсужденный в интересном эссе на том, что должен включать идеальный инструментарий.

  • xmldiff: Простой инструмент для сравнения двух xml файлов.

  • xmltk: кажется, не имеет пакет в debian, человечности, мягкой фетровой шляпе, или macports, не имел выпуска с 2007 и использует непортативную автоматизацию сборки.

xml-coreutils кажется лучшим, зарегистрированным и наиболее ориентированным на UNIX.

34
ответ дан johny655 18 September 2008 в 11:36
поделиться

Зависит от точно, что Вы хотите сделать.

XSLT может быть способом пойти, но существует кривая обучения. Попробуйте xsltproc и обратите внимание, что можно вручить параметры.

5
ответ дан Adrian Mouat 18 September 2008 в 11:36
поделиться
  • 1
    И I' ve теперь также обновил официальную документацию HTML - должен скоро собраться для 3,2 и 3.3, и через несколько дней для 2,7. – Vinay Sajip 12 June 2011 в 10:52

JEdit имеет плагин под названием "XQuery", который обеспечивает запросы функциональности для XML-документов.

Не совсем командная строка, но это работает!

-1
ответ дан Ben 18 September 2008 в 11:36
поделиться
  • 1
    Форматирование. Действительно добавьте https и двоеточия и наклонные черты перед github.com – Martin Paljak 17 June 2013 в 13:30

К превосходному списку Joseph Holsten я добавляю xpath сценарий командной строки, который идет с библиотекой Perl XML:: XPath. Отличный способ извлечь информацию из XML-файлов:

 xpath -q -e '/entry[@xml:lang="fr"]' *xml
24
ответ дан bortzmeyer 18 September 2008 в 11:36
поделиться

Также существует пара xml2 и 2xml . Это позволит обычным инструментам редактирования строк обрабатывать XML.

Пример. q.xml:

<?xml version="1.0"?>
<foo>
    text
    more text
    <textnode>ddd</textnode><textnode a="bv">dsss</textnode>
    <![CDATA[ asfdasdsa <foo> sdfsdfdsf <bar> ]]>
</foo>

xml2

/foo=
/foo=   text
/foo=   more text
/foo=   
/foo/textnode=ddd
/foo/textnode
/foo/textnode/@a=bv
/foo/textnode=dsss
/foo=
/foo=    asfdasdsa <foo> sdfsdfdsf <bar> 
/foo=

xml2

<bar><baz><textnode>ddd</textnode><textnode a="bv">dsss</textnode></baz></bar>

P.S. Также есть html2 / 2html .

24
ответ дан 23 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: