2012-05-24 4 views
0

Я заметил, что если я отправлю декодированный XML в конечную точку, он завершится неудачей с ошибкой неправильного запроса, но если я завершу запрос на CDATA или закодирую символы, он будет работать нормально, поэтому мои два вопроса:Объяснение CDATA?

Зачем мне нужно использовать CDATA или кодировать символы?

Что касается веб-службы, которая заставляет меня делать это?

В чем разница между переносом сообщения в CDATA и кодированием символов?

Если CDATA игнорируется синтаксическим анализатором, не означает ли это, что сообщение, которое вы пытаетесь отправить, обрабатываться не будет?

У моего веб-сервиса есть веб-метод, называемый Process, но сообщение, которое пытается быть отправлено, является MessageB, поэтому мне нужно обернуть содержимое MessageB в CDATA, потому что XML Parser не поймет его?

Если в моем веб-сервисе был веб-метод MessageB, все равно требуется, чтобы он был обернут в CDATA или экранирован? Мое дело в том, что у меня нет веб-метода MessageB, но что-то называется Process, которое слушает запрос MessageB через оператор switch. Я думаю, потому что у меня нет MessageB, определенного как веб-метод, вот почему я должен обернуть его в CDATA или избежать его, но я считаю, что мое мышление ошибочно?

+2

Простой [google search] (http://www.w3schools.com/xml/xml_cdata.asp) может ответить на все эти вопросы. – asawyer

+0

Вам нужно узнать, как работает XML. – SLaks

+0

@asawyer - На самом деле я изначально читал об этом, но я все еще был в замешательстве. – Xaisoft

ответ

1

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

Это не относится к веб-службам, но применяется в любое время, когда вы хотите использовать XML-код как значение внутри XML-документа.

Практически не существует различий между использованием CDATA и кодированием символов. Это всего лишь два разных способа вложения специальных символов в значение в документе XML.

+0

Когда вы говорите, что не можете найти элементы, на которые он не может сопоставляться, вы также ссылаетесь на веб-метод, который он не может найти. – Xaisoft

+0

@ Xaisoft: Нет, я имею в виду, что веб-служба ожидает элемент с помощью только одного текстовое значение в нем, и вместо этого находит в нем множество других элементов. Кодируя символы, он будет рассматриваться как текстовое значение, а не как элементы. – Guffa

+0

ОК, я редактировал свое сообщение, чтобы указать, что у меня есть один веб-метод в моем веб-сервисе. Я предполагаю, что если отправлено какое-либо другое сообщение, вот почему мне нужно обернуть запрос в CDATA, правильно? – Xaisoft

1

Номера, представленные на сайте: и <не разрешено для отображения в формате XML.

Стандарт XML требует, чтобы они либо были экранированы с помощью XML-сущностей, либо они были обернуты в блоки <![CDATA[, в которых XML-анализы анализируют весь блок как обычный текст.

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

1

Некоторые символы имеют особый смысл в XML. Например, < означает «Начало тега» и & означает «Начало символьной ссылки».

CDATA-маркеры указывают, что некоторый контент является простым текстом, а не разметкой, поэтому < означает «меньше знака» и & означает «Амперсанд».

+0

Почему некоторые веб-службы требуют простого текста? – Xaisoft

+0

Потому что кто-то его спроектировал, разработал так. Я не хотел бы размышлять о том, почему кто-то создал неуказанный сервис в определенном (неопределенно указанном) способе. – Quentin

+0

Когда я генерирую сообщение через мыло-ui из wsdl, я получаю структуру, похожую на следующую ?. Does относится к моему веб-методу Process и что-либо между запросами необходимо обернуть в CDATA или сбежать? – Xaisoft

0

Если вы пришлете сообщение <a><b/></a> кому-то, то это отличное от сообщения <a><[CDATA[<b/>]]></a>. Ни один из них не прав или не прав, но может быть то, что ожидает получатель, а другой - нет. Потребитель XML может сказать, какие сообщения он понимает. В веб-сервисах нет ничего, что говорит о том, что что-то должно быть в CDATA, просто именно этот веб-сервис, похоже, был разработан таким образом.

+0

Майкл, когда вы говорите, спроектирован таким образом, что именно вы имеете в виду, есть ли у вас пример веб-сервиса, который потребует блоков CDATA? – Xaisoft

Смежные вопросы