2014-02-15 2 views
0

У меня есть конкретный сценарий, в котором я хочу, чтобы разобрать строку, как это с помощью XPath 1.0:Синтаксический разделенных запятыми строку с помощью XPATH

RESP: 0: MSISDN, 46455381234: GPRS, PDPCONTEXT, APNID, 1, PDPADD, 136.225.1.1, EQOSID, 1, PDPCONTEXT, APNID, 2, PDPADD, 136.225.1.2, EQOSID, 2, VPAA, 0: БПАЦ, 1: BOIEXH, 1,1,46455381234, TS10,1, TS20;

Строка содержит разделы, разделенные точку с запятой (;), которые либо простой ключевыми параметрами значения (например MSISDN,46455381234) или сложными, разделенная запятой (например GPRS,PDPCONTEXT,APNID,1,...), параметры являются полностью динамическими, и без какого-либо определенного порядка.

Нужный результат будет:

MSISDN,0 
GPRS 
- PDPCONTEXT 
-- APNID,1 
-- PDPADD,136.225.1.1 
-- EQOSID,1 
- PDPCONTEXT 
-- APNID,2 
-- PDPADD,136.225.1.2 
-- EQOSID,2 
BOIEXH 
- TS10,1,46455381234 
- TS20,1 

Любые предложения?

+0

В какой версии XPath или XQuery вы можете использовать 3.0, например http://www.w3.org/TR/xpath-functions-30/#func-analyze-string, что могло бы помочь. С XPath 2.0 и XQuery 1.0 вы можете использовать 'tokenize' и' matches'. –

+0

К сожалению, я должен использовать XPATH 1.0. –

+0

XPath 1? Почему вы добавили тег «xquery»? XQuery 1 является почти супер-множеством XPath 2. – BeniBela

ответ

1

Эта проблема не может быть решена в XPath 1.0, которая имеет очень ограниченные возможности манипулирования строками и отсутствие поддержки выполнения циклов или даже рекурсии.

Если вы можете изменить реализацию XPath к лучшему/более новый, некоторые мысли:

  • Использование XQuery (независимо от того, какая версия) это вполне возможно.
  • Возможно, это довольно ограниченный набор вложений с использованием некоторых регулярных выражений в XPath 2.0, но вам, вероятно, будет трудно построить это.
  • Используйте любой другой язык программирования, который вы используете, чтобы вызвать XPath и построить там дерево.
Смежные вопросы