Находят Процедуры Ключевым словом
, Какие процедуры содержат определенную часть текста (Имя таблицы, имя столбца, имя переменной, TODO, и т.д.)?
SELECT OBJECT_NAME(ID) FROM SysComments
WHERE Text LIKE '%SearchString%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
Все зависит от размера единицы работы, но я думаю, вы пытаетесь обработать каждую < product />
узлов подряд.
Для этого самым простым способом было бы использовать XMLReader для доступа к каждому узлу, а затем использовать SimpleXML для доступа к ним. Таким образом, вы сохраняете низкий уровень использования памяти, потому что обрабатываете по одному узлу за раз, и вы по-прежнему пользуетесь простотой использования SimpleXML. Например:
$z = new XMLReader;
$z->open('data.xml');
$doc = new DOMDocument;
// move to the first <product /> node
while ($z->read() && $z->name !== 'product');
// now that we're at the right depth, hop to the next <product/> until the end of the tree
while ($z->name === 'product')
{
// either one should work
//$node = new SimpleXMLElement($z->readOuterXML());
$node = simplexml_import_dom($doc->importNode($z->expand(), true));
// now you can use $node without going insane about parsing
var_dump($node->element_1);
// go to next <product />
$z->next('product');
}
Краткий обзор плюсов и минусов различных подходов:
Только XMLReader
Достоинства: быстро, использует мало памяти
Минусы: слишком сложно писать и отлаживать, требует большого количества пользовательского кода. ничего полезного. Код пользовательского пространства медленный и подвержен ошибкам. Кроме того, это оставляет вам больше строк кода для поддержки
XMLReader + SimpleXML
Плюсы: не t используют много памяти (только память, необходимая для обработки одного узла), а SimpleXML, как следует из названия, действительно прост в использовании.
Минусы: создание объекта SimpleXMLElement для каждого узла не очень быстрое. Вам действительно нужно протестировать его, чтобы понять, является ли это проблемой для вас. Однако даже скромная машина сможет обрабатывать тысячу узлов в секунду.
XMLReader + DOM
Плюсы: использует примерно столько же памяти, сколько SimpleXML, а XMLReader :: expand () является быстрее, чем создание нового SimpleXMLElement. Хотелось бы, чтобы можно было использовать simplexml_import_dom ()
, но, похоже, в этом случае он не работает
Минусы: работа с DOM утомляет. Это на полпути между XMLReader и SimpleXML. Не такой сложный и неудобный, как XMLReader, но на много световых лет от работы с SimpleXML.
Мой совет: напишите прототип с помощью SimpleXML, посмотрите, подойдет ли он вам. Если производительность превыше всего, попробуйте DOM. Держитесь как можно дальше от XMLReader. Помните, что чем больше кода вы напишите, тем выше вероятность появления ошибок или снижения производительности.
XMLReader хорошо документирован на сайте PHP . Это XML Pull Parser, что означает, что он используется для перебора узлов (или узлов DOM) данного XML-документа. Например, вы можете просмотреть весь предоставленный документ следующим образом: