На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL
  
> xml из текста
    Есть некий xml, который возвращает внешний сервер. В этом xml'е много всего, плюс кое что нужное конкретно мне. Это что-то - xml, полученный путем склейки текста, и обернутый в CDATA, то есть на входе что-то типа такого:
    ExpandedWrap disabled
      <?xml version="1.0" encoding="UTF-8"?>
      <tag>
          <tag2>12345</tag2>
          <xml><![CDATA[
                  <group>
                      <oper>op1</oper>
                      <oper>op2</oper>
                      <oper>op3</oper>
                      <group2>
                          <oper>op4</oper>
                          <oper>op5</oper>
                      </group2>
                  </group>
                  ]]></xml>
          <tag3>abcd</tag3>
      </tag>


    Вот то, что лежит в теге <xml> мне и нужно. Проблема в том, что у меня содержимое выкусывается как текст :( А мне нужен xml. То есть нужно не просто выкусить, но и прогнать через свои шаблончики, преобразовать, и все такое. А как я прогоню, если процессор считает, что это текст... Влиять на входной формат возможности нет, то есть есть, но лишь на содержимое тега <xml>, т.е. внутрь CDATA могу дописать что угодно, если вдруг надо. С какой стороны подойти к решению что-то не соображу, нужно средствами xslt 1.0 :scratch:
    Сообщение отредактировано: Астарот -
      Эту проблему уже 10 лет решают )
      Средствами стандартными xslt 1.0 - никак: у тебя записан текст, и парсеру плевать, ничего он с ним не сделает. Лучшее, что ты можешь сделать - это вывести его в документ, а потом уже этот документ своими шаблончинками колбасить. Есть ещё всякие saxon'овские примочки, об этом на stackoverflow можно посмотреть.
      Есть ещё вариант строку парсить и самому создавать древовидную структуру, но это уже онанизм какой-то... Хотя от задачи зависит, может тебе и нормально будет - в файл и из файла гонять ещё медленнее будет.

      Добавлено
      А ещё не надо постить в третьем часу ночи - косноязычие во все места <_<
        Цитата ss @
        Эту проблему уже 10 лет решают )

        Эх, фак :(

        Цитата ss @
        Есть ещё вариант строку парсить и самому создавать древовидную структуру, но это уже онанизм какой-то... Хотя от задачи зависит, может тебе и нормально будет - в файл и из файла гонять ещё медленнее будет.

        Да нет, быстрее тогда будет сделать внутрях готовую разметку - как в общем-то и сделал по итогу. Просто коряво это как-то :(
          Цитата Астарот @
          сделать внутрях готовую разметку - как в общем-то и сделал по итогу.
          Это в каких нутрях? Заместо CDATA? Резонный вопрос, всплывающий не только у меня - а почему сразу не сделать было внутре XML?
            Цитата ss @
            Это в каких нутрях? Заместо CDATA? Резонный вопрос, всплывающий не только у меня - а почему сразу не сделать было внутре XML?

            Хм... :scratch: Знач так - ответ возвращается из оракла посредствам сервера приложений. Сервер приложений - вот непруха-то! - не понимает оракловый xmltype. То есть на стороне оракла данные приходится собирать банально в clob. А clob возвращается в таком вот виде - обернутым cdata'ой. То есть нагенерить там вполне валидный xml я могу, но он все равно будет типа текст, потому что clob, а clob это cdata. Допилить сервер приложений не вариант - не в моей власти :)
            Сообщение отредактировано: Астарот -
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0204 ]   [ 14 queries used ]   [ Generated: 14.05.24, 13:27 GMT ]