Ici Moi (allter) wrote,
Ici Moi
allter

Однопроходная обработка XML в трубопроводах.

XML по своему замечательный формат, поскольку для его обработки требуется всего лишь память, равная максимальной длине всех вложенных тегов + максимальному количеству вложенных тегов (а если требуется обрабатывать не весь документ, а только подэлементы, то и того меньше). Но для того, что бы обрабатывать XML поточно (событийным способом) надо сначала знать, что он, как минимум, well-formed. Т.е. по идее, надо сначала засосать XML куда-нибудь (потенциально гигантского размера), убедиться, что он well-formed, а затем обрабатывать. Тогда как можно выделить специальный тег вроде <error xmlns="streaming_error" />, который бы сигнализировал последующим обработчикам о том, что на предыдущем шаге парсер или обработчик обнаружил условие ошибки.

Т.е. обработчики могут пропускать через себя XML без проверки на валидность, а в случае ошибки сигнализировать последующим обработчикам "ну не шмогла я". Соответственно, последний обработчик в цепочке может, получив эту информацию, в зависимости от заданной логики либо отбрасывать весь уровень XML, предшествующий сообщению об ошибке, либо отбрасывать весь XML документ, в котором содержится ошибка, либо приступить к восстановлению ошибочных данных.

Вопрос: где-нибудь описан стандарт подобного оповещения? Гугление особо ничего не дало.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment