Строка сообщения HTTP с тем же родительским именем

Я создал HTTP-запрос с использованием rails и HTTParty, который выглядит следующим образом...

xml = "<Member><Telephone-group><Value><PhoneNumber></PhoneNumber></Value></Telephone-group></Member>"
DeleteNumber.post("http://url/path/members/" + msid + "?securityKey=securitykey", :query => {:newValues => xml})

Цель состоит в том, чтобы удалить существующий номер мобильного (сотового) телефона из базы данных, разместив пустую строку, которая отлично работает. Однако в XML-документе, который я публикую, часто встречается несколько типов телефонных номеров, включая домашний и рабочий номера. К сожалению, все они называются одинаково, как показано ниже...

<Telephone-group type="associated" writable="true">
  <Value>
    <PhoneNumber>01234567891</PhoneNumber>
    <PhoneType>H</PhoneType>
    <PhoneTypeDesc writable="false">Home</PhoneTypeDesc>
  </Value>
  <Value>
    <PhoneNumber>07123456789</PhoneNumber>
    <PhoneType>M</PhoneType>
    <PhoneTypeDesc writable="false">Mobile</PhoneTypeDesc>
  </Value>
</Telephone-group>

Как я могу указать, что он удаляет только номер мобильного телефона? Я знаю, как это сделать с помощью xpath, возможно, что-то вроде "(//phonenumber)[..//phonetype = "M"]", но я не знаю, как указать это с помощью параметр http-сообщения. Любая помощь очень ценится, большое спасибо!


person tob88    schedule 18.01.2012    source источник


Ответы (1)


Могу ли я предложить вам загрузить весь xml или, по крайней мере, всю часть телефонной группы, манипулировать ею в Rails, а затем опубликовать ее обратно, за исключением информации, которая вам не нужна...

person Geoff Wright    schedule 18.01.2012
comment
Это должно быть повторено для десятков тысяч участников, и я хотел бы сохранить его эффективность с минимально возможной обработкой. - person tob88; 18.01.2012
comment
Тогда я бы сказал, что вы используете неправильный инструмент для работы. Насколько мне известно, HTTParty предназначен для выдачи простых запросов на получение/отправку (согласно: rubyinside.com/) Поэтому HTTParty предназначен для отправки или получения вещей, которые сделало ваше приложение Rails. Так что, если у вас есть какая-то логика, которую вам нужно запускать на лету, будь то простая или сложная, тогда HTTParty, вероятно, не подходит для этой работы. Правильным использованием HTTParty было бы: вытащить (через HTTParty) XML, манипулировать им, а затем отправить обратно с помощью HTTParty. - person Geoff Wright; 18.01.2012