Предположим, что вы выполняете итерации через некоторые объекты 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 (), что когда-либо работает для вас. Я надеюсь, что это поможет другим с той же проблемой. Приветствия:)
Я нашел, что xmlstarlet довольно хорош в этом виде вещи.
http://xmlstar.sourceforge.net/
Должен быть доступным в большинстве репозиториев дистрибутива, также. Вводное учебное руководство здесь:
XQuery мог бы быть хорошим решением. Это (относительно) легко изучить и является стандартом W3C.
я рекомендовал бы XQSharp для процессора командной строки.
Некоторые многообещающие инструменты:
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.
Зависит от точно, что Вы хотите сделать.
XSLT может быть способом пойти, но существует кривая обучения. Попробуйте xsltproc и обратите внимание, что можно вручить параметры.
JEdit имеет плагин под названием "XQuery", который обеспечивает запросы функциональности для XML-документов.
Не совсем командная строка, но это работает!
К превосходному списку Joseph Holsten я добавляю xpath сценарий командной строки, который идет с библиотекой Perl XML:: XPath. Отличный способ извлечь информацию из XML-файлов:
xpath -q -e '/entry[@xml:lang="fr"]' *xml
Также существует пара 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
.