Библиотека Java, использующая селекторы CSS для анализа XML - PullRequest
7 голосов
/ 03 августа 2011

Существует ли jQuery, подобный библиотеке JAVA / Android, которая использует селекторы CSS для анализа XML?

Как:

String desc = myXML.find("bloc[type=pro]").get(0).attr("description");

Chainability это то, что я ищу, так же, как jQuery ...

Я надеюсь, что это существует!

Ответы [ 5 ]

8 голосов
/ 04 августа 2011

Хотя изначально он был разработан как HTML-анализатор с поддержкой селектора CSS, Jsoup отлично работает и для документов XML, если ваше единственное намерение - извлечь данные, а не манипулировать data.

Document document = Jsoup.parse(xmlString);
String desc = document.select("bloc[type=pro]").get(0).attr("description");
// ...

Видите ли, синтаксис почти идентичен тому, что у вас было в вопросе.

3 голосов
/ 03 августа 2011

Apache Jericho - это то, что вы ищете.

Ваш пример будет выглядеть как

String desc = source.getFirstElement( "type", "pro" ).getAttributeValue( "description" );

Разумно разбирать HTML с иерихоном, так что, думаю, это еще проще для хорошо структурированного XML.

2 голосов
/ 09 августа 2011

Поскольку в других библиотеках есть ошибки, такие как Jsoup и Иерихон отличается от того, что я ожидал,

я написал класс, расширяющий org.xml.sax.helpers.DefaultHandlerкоторые разбирают XML.Затем я написал два других класса, которые выглядят как Element и Elements из Jsoup, содержащих две функции с именем find, которые обрабатывают селектор CSS3, и attr, который возвращает значение атрибута.

Я сейчасочистка и комментирование этого кода ... Я опубликую библиотеку позже для тех, кто интересуется.

xmlDoc.find("bloc[type=Pro]>act").attr("label");

теперь возможно, как в jQuery!


Редактировать!

Вот ссылка для доступа к интересующему вас коду: Проект Google Code


Переход на GitHub: https://github.com/ChristopheCVB/JavaXMLQuery

1 голос
/ 13 ноября 2013

Библиотека droidQuery может выполнять многие задачи, которые вы ищете.Хотя синтаксис немного отличается, вы можете:

  • Получить атрибуты представления, используя цепочечные команды jQuery в стиле, такие как:

    CharSequence text = $.with(this, R.id.myTextView).attr("text");
    
  • Разбор XML:

    Document dom = $.parseXML(myXMLString);
    

Если вы являетесь поклонником jQuery , вам будет приятно увидеть, что почти все функции, которые он предоставляет, включены в droidQuery , и хотя синтаксис может время от времени различаться, его основная цель - максимально приблизить синтаксически к jQuery насколько возможно.

1 голос
/ 09 августа 2011

Я использую XPath для решения этой проблемы.Синтаксический анализ XML, такой как JDOM, подходит для XPath.Может быть, jQuery увидит, как работает XPath: p

//bloc[@type="pro"][1]/@description

Индекс Xpath начинается с 1, а не с 0

http://www.w3schools.com/XPath/xpath_syntax.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...