JAXB в неМаршалл <строка> foobar </строка>

Это - лучшая статья, которую я нашел об этой теме: Перезапись URL IIS и ASP.NET, направляющий Ruslan Yakushev.

URL IIS, Переписывая

, Когда клиент выполняет запрос к веб-серверу для конкретного URL, переписывающий URL компонент анализирует требуемый URL и изменяет его на различный другой URL на том же сервере. Переписывающий URL компонент работает очень рано в конвейере обработки запросов, поэтому в состоянии изменить требуемый URL, прежде чем веб-сервер примет решение о который обработчик использовать для обработки запроса.

IIS URL Rewriting

ASP.NET, Направляющий

, маршрутизация ASP.NET реализована как модуль управляемого кода, который включает конвейер обработки запросов IIS на этапе Кэша Твердости (событие PostResolveRequestCache) и на этапе Обработчика Карт (PostMapRequestHandler). маршрутизация ASP.NET настроена для выполнения за всеми запросами, выполненными к веб-приложению.

IIS URL Routing

Различия между перезаписью URL и маршрутизацией ASP.NET:

  1. перезапись URL используется для управления путями URL , прежде чем запрос будет обработан веб-сервером . Переписывающий URL модуль ничего не знает о том, какой обработчик в конечном счете обработает переписанный URL. Кроме того, фактический обработчик запросов не мог бы знать, что URL был переписан.
  2. маршрутизация ASP.NET привыкла к [1 122], отправляют запрос обработчику на основе требуемого пути URL . В противоположность перезаписи URL компонент маршрутизации знает об обработчиках и выбирает обработчик, который должен генерировать ответ для требуемого URL. Можно думать о ASP.NET, направляющем как усовершенствованный отображающий обработчик механизм.

В дополнение к этим концептуальным различиям, существуют некоторые функциональные различия между перезаписью URL IIS и маршрутизацией ASP.NET:

  1. модуль перезаписи URL IIS может использоваться с любым типом веб-приложения, которое включает ASP.NET, PHP, ASP и статические файлы. маршрутизация ASP.NET может использоваться только с.NET Основанные на платформе веб-приложения.
  2. модуль перезаписи URL IIS работает, тот же путь независимо от или интегрированный или классический конвейерный режим IIS используются для пула приложений. Для маршрутизации ASP.NET желательно использовать интегрированный конвейерный режим. маршрутизация ASP.NET может работать в классическом режиме, но в этом случае приложение URL должно включать расширения файла, или приложение должно быть настроено для использования "*" обработчик, отображающийся в IIS.
  3. модуль перезаписи URL может принять решения перезаписи на основе доменных имен, HTTP-заголовков и серверных переменных. По умолчанию, ASP.NET, направляющий работы только с путями URL и с заголовком Метода HTTP.
  4. В дополнение к перезаписи, модуль перезаписи URL может выполнить Перенаправление HTTP, выпустить пользовательские коды статусов и прервать запросы. маршрутизация ASP.NET не выполняет те задачи.
  5. модуль перезаписи URL не расширяем в своей текущей версии. маршрутизация ASP.NET полностью расширяема и настраиваема.

5
задан 17 October 2009 в 03:02
поделиться

3 ответа

Меня это удивило, но, похоже, работает следующее:

final String xmlString = "<string>value</string>";
final StringReader xmlReader = new StringReader(xmlString);
final StreamSource xmlSource = new StreamSource(xmlReader);
final JAXBContext jaxbContext = JAXBContext.newInstance(String.class);
final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
final String stringValue = unmarshaller.unmarshal(xmlSource, String.class).getValue();

Это то, что вы искали?

8
ответ дан 18 December 2019 в 07:10
поделиться

Когда вы используете JAXB, вам нужно построить код вокруг схемы XML. То есть, если у вас есть файл, скажем, foo.xsd, вам нужно запустить его через компилятор xjc (по умолчанию в JDK 6, иначе вы можете загрузить JAXB 2 и использовать его). Это прочитает схему и сгенерирует Java bean и связанные классы ObjectFactory с элементами в схеме. Классы Java-компонентов будут выглядеть как обычные объекты POJO с аннотациями. Классы ObjectFactory необходимы реализации JAXB для преобразования XML в соответствующий компонент Java. Это объясняет отсутствие исключения в ObjectFactory.

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

3
ответ дан 18 December 2019 в 07:10
поделиться

Вам нужно написать объектную модель, которая соответствует вашей структуре XML, и сообщить JAXB, чтобы она не была упорядочена. Ваш пример может показаться простым, но это не то, для чего предназначен JAXB.

Попробуйте что-нибудь вроде этого:

@XmlRootElement(name="string", namespace="blah")
public class MyString {
   @XmlValue
   String value;
}

JAXBContext context = JAXBContext.newInstance(MyString.class);
MyString myString = (MyString) context.createUnmarshaller().unmarshal(...);

Это будет демаршалировать XML foobar . Соответственно измените пространство имен. Если у вас много пространств имен, тогда JAXB не для вас.

11
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: