синтаксический анализ

Класс: matlab.net.http.
Пакет: matlab.net.http

Проанализируйте значение поля заголовка и возвратитесь как строки

Синтаксис

value = parse(obj)
value = parse(obj,fields)
value = parse(___,Name,Value)

Описание

value = parse(obj) анализирует свойство Value поля заголовка и возвращает строки. Используйте этот метод, чтобы обработать поля заголовка, для которых нет никакого класса в пакете matlab.net.http.field. Используйте метод matlab.net.http.HeaderField.displaySubclasses, чтобы отобразить классы в пакете. Для классов в пакете используйте соответствующий метод convert, чтобы проанализировать значение.

Правила парсинга основаны на разделах 3.2.4-3.2.6 из RFC 7230, передают Синтаксис и Маршрутизацию и увеличиваются, чтобы интерпретировать несколько значений.

пример

value = parse(obj,fields) задает имена, чтобы использовать для полей struct без имени.

Если поле Nth struct не имеет никакого имени, соответствующее Энное имя в fields существует и непусто. Это используется вместо Arg_N. Используя этот синтаксис обеспечивает возвращенный value, чтобы быть struct (или вектор объектов struct) с, по крайней мере, столькими же полей сколько длина fields. Обычно этот шаблон происходит в полях заголовка, которые начинаются с лексемы, сопровождаемой парами атрибута.

value = parse(___,Name,Value) задает один или несколько разделителей. Разделители по умолчанию являются запятыми и точками с запятой. Можно комбинировать с любым синтаксом из перечисленных выше.

Входные параметры

развернуть все

Поле Header, заданное как объект matlab.net.http.HeaderField или вектор объектов HeaderField.

Имена полей struct, заданных как вектор строки, вектор символов или массив ячеек из символьных векторов.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Разделители, разделяющие элементы массива, заданные как:

  • Вектор строки, вектор символов или вектор ячейки регулярных выражений, задающих возможные разделители, интерпретированные в порядке, они появляются в векторе.

  • '' — Не анализируйте obj как массив. MATLAB® вставляет кавычки и символы ESC.

  • [] — Не анализируйте obj как массив. MATLAB не вставляет кавычки или символы ESC в элементы массива.

Разделители, разделяющие поля структуры, заданные как:

  • Вектор строки, вектор символов или вектор ячейки регулярных выражений, задающих возможные разделители, интерпретированные в порядке, они появляются в векторе.

  • '' — Не анализируйте obj как struct. MATLAB вставляет кавычки и символы ESC.

  • [] — Не анализируйте obj как struct. MATLAB не вставляет кавычки или символы ESC в значения struct.

Выходные аргументы

развернуть все

Свойство Value поля Header, возвращенное как вектор строки, массив struct или массив ячеек значений struct.

MATLAB анализирует свойство Value как список разделенных от запятой строк. Каждая строка становится элементом вектора value. Элемент является одним из следующего:

  • struct пар name=value

  • struct разделенных от точки с запятой значений

  • представьте в виде строки, если поле не содержит точку с запятой или знак "равно" или, кажется, не структура.

parse преобразовывает имя каждого поля struct к допустимому идентификатору MATLAB с помощью matlab.lang.makeValidName. Для следующего свойства Value parse создает имя поля x_p1 из _p1.

Чтобы разрешить двойные названия, parse вызывает matlab.lang.makeUniqueStrings. Для следующего свойства Value parse создает имя поля p11 из дублирующегося имени поля p1.

Если поле struct содержит только Value, но не пару name=value, то именем поля является Arg_N. N является порядковым положением поля в struct. Для следующего свойства Value parse создает имя поля Arg_2 для недостающего имени.

Свойство Value

Выходной аргумент

Описание

"p1=first p2=second"
    p1: "first"
    p2: "second"

parse возвращает struct для пар name=value.

"first;second"
    Arg_1: "first"
    Arg_2: "second"

parse возвращает struct и присваивает имена полей по умолчанию для разделенных от точки с запятой значений.

"first second"
"first second"

parse возвращает строку, если поле не содержит точку с запятой или знак "равно" или, кажется, не структура.

"_p1=first p2=second"
    x_p1: "first"
      p2: "second"

parse преобразовывает недопустимое имя поля _p1 в x_p1.

"p1=first p1=second"
    p1: "first"
    p11: "second"

parse преобразовывает дублирующееся имя поля p1 в p11.

"p1=first; second"
      p1: "first"
    Arg_2: "second"

parse создает имя поля Arg_2 для недостающего имени для Value second.

"p1=first; p3=(a comment here)"
    p1: "first"
    p3: "(a comment here)"

parse сохраняет комментарии.

Если obj является вектором полей заголовка, то метод parse конкатенирует результаты парсинга каждого из полей в единый массив. Если значения не имеют того же типа, то value является массивом ячеек.

Свойство Value полевого вектора заголовка

Элемент выходного аргумента массива ячеек

"p1=first p2=second"
x{1} =
 
    p1: "first"
    p2: "second"
"third"
x{2} =
 
third

Примеры

развернуть все

Примите, что вы получаете поле H заголовка в сообщении ответа с сервера со свойством Value media-type; name1=value1; name2=value2. Чтобы запустить этот пример, создайте переменную H.

H = matlab.net.http.HeaderField('Test-Name','media-type; name1=value1; name2=value2')
H = 

  HeaderField with properties:

     Name: "Test-Name"
    Value: "media-type; name1=value1; name2=value2"

Проанализируйте свойство Value H. MATLAB создает имя поля по умолчанию Arg_1.

var = parse(H)
var = 

  struct with fields:

    Arg_1: "media-type"
    name1: "value1"
    name2: "value2"

Измените значение по умолчанию на больше понятного имени MediaType.

var = parse(H,'MediaType')
var = 

  struct with fields:

    MediaType: "media-type"
        name1: "value1"
        name2: "value2"

Введенный в R2017b