Получить строку между двумя строками? - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть строка:

<products type="array">
<product><brand>Rho2</brand>
<created-at type="datetime">2011-11-03T21:29:46Z</created-at><id type="integer">78013</id><name>Test2</name>
<price nil="true"/>
<quantity nil="true"/>
<sku nil="true"/>
<updated-at type="datetime">2011-11-03T21:29:46Z</updated-at>
</product>
<product>
<brand>Apple</brand>
<created-at type="datetime">2011-10-26T21:26:59Z</created-at>
<id type="integer">77678</id>
<name>iPhone</name>
<price>$199.99</price>
<quantity>5</quantity>
<sku>1234</sku>
<updated-at type="datetime">2011-10-26T21:27:00Z</updated-at>
</product>  

Я хочу получить текст от <brand> до </brand>.

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

Ответы [ 4 ]

1 голос
/ 04 ноября 2011

XmlSimple должно быть легко.

 require 'xmlsimple'
 products = XmlSimple.xml_in('<YOUR WHOLE XML>', { 'KeyAttr' => 'product' })
0 голосов
/ 30 апреля 2015
function getStringBetween(str , fromStr , toStr){
  var fromStrIndex = str.indexOf(fromStr) == -1 ? 0 : str.indexOf(fromStr) + fromStr.length;
  var toStrIndex = str.slice(fromStrIndex).indexOf(toStr) == -1 ? str.length-1 : str.slice(fromStrIndex).indexOf(toStr) + fromStrIndex;
  var strBtween = str.substring(fromStrIndex,toStrIndex);
  return strBtween;
}
0 голосов
/ 01 мая 2013

Стандарт defacto для парсинга XML и HTML в Ruby: Nokogiri , в наши дни:

require 'nokogiri'

doc = Nokogiri::XML(<<EOT)
<products type="array">
  <product>
    <brand>Rho2</brand>
    <created-at type="datetime">2011-11-03T21:29:46Z</created-at>
  </product>
  <product>
    <brand>Apple</brand>
    <created-at type="datetime">2011-10-26T21:26:59Z</created-at>
  </product>  
</products>
EOT

puts doc.search('brand').map(&:text)

Какие выходы:

Rho2
Apple
0 голосов
/ 04 ноября 2011

Вы должны использовать любой XML-парсер, доступный на вашей платформе.Затем вы можете использовать простое выражение XPath:

//brand

Выбирает все brand элементы в документе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...