На всякий случай, если вы используете хранилище переменной с использованием универсального типа, вы можете легко решить эту проблему, добавив метод getClassType следующим образом:
public class Constant<T> {
private T value;
@SuppressWarnings("unchecked")
public Class<T> getClassType () {
return ((Class<T>) value.getClass());
}
}
Я использую предоставленный объект класса позже, чтобы проверить, экземпляр данного класса, следующим образом:
Constant<?> constant = ...;
if (constant.getClassType().equals(Integer.class)) {
Constant<Integer> integerConstant = (Constant<Integer>)constant;
Integer value = integerConstant.getValue();
// ...
}
После поиска с помощью Google далее (начальные результаты не были очень полезны), кажется, что существует на самом деле библиотека Zend Framework для этого, вместе с некоторыми другими:
XPath является довольно стандартным способом получить доступ к XML (и XHTML) узлы и обеспечивает намного больше точности, чем CSS.
Для jQuery самые интересные пользователи могут быть порт jQuery к PHP, который является phpQuery. Почти все разделы библиотеки портированы. Дополнительно это содержит плагин WebBrowser, который может использоваться для сети, Очищающей путь/процессы целого сайта (например, получающей доступ к доступным данным после входа в систему). Это просто моделирует веб-браузер на сервере (события и cookie также). Последние версии имеют экспериментальную поддержку XML пространства имен и CSS3 " | " селектор .
Для парсинга документа я использую DOM. Это может довольно легко решить Вашу проблему, если Вы знаете имя тега (в этом примере "отделение"):
$doc = new DOMDocument();
$doc->loadHTML($html);
$elements = $doc->getElementsByTagName("div");
foreach ($elements as $e){
if ($e->getAttribute("class")!="someclass") continue;
//its a div.classname
}
Не уверенный, если DOM позволяет Вам получить все элементы документа сразу..., Вам, возможно, придется сделать обход дерева.
Я написал свой, на основе механизма выбора CSS Mootools http: // selectors .svn.exyks.org / . он полагается на возможность расширения simplexml (поэтому он доступен только для чтения)
Отличным является компонент symfony 2, CssSelector\ParserВведение. Он преобразует селекторы CSS в выражения XPath. Посмотрите =)