2016-04-05 3 views
0

Я хочу получить некоторые данные из xml с помощью xquery. Оригинальный XML является чем-то вроде:Ошибка XQuery: E Для строки ввода: «5770000»

<mondial> 
<country id="AAA" name="BBB"> 
<name>BBB</name> 
<city id="CCC" country="AAA"> 
<name>DDD</name> 
<population>XXXX</population> 
<located_at type="XX"/> 
</city> 
... 
</country> 
... 
</mondial> 

Я пишу XQuery так:

let $cs:=//city[population >5000000 and located_at/@type='sea'] 
let $countries := //country 
for $country in $countries 
for $city in $cs 
where $country/@id =$city/@country 
return <seacity>{data($city/name)},{data($country/name)}</seacity> 

я использую кислород, чтобы сделать преобразование. Вышла ошибка:

E For input string: "5770000"

Я не знаю, где было не так. enter image description here

+0

Я не признаю эту ошибку специально, но вы недостающую декларацию XQuery, и ваши ссылки запроса ' locate_at' вместо 'local_at', имя элемента из вашего XML. – wst

+1

Глядя на скриншот, кажется, что ваш XML сломан. Либо у вас очень странный шрифт, либо кавычки не являются нормальными, указанными ('' 'и' ''), а некоторыми типографскими кавычками. Кроме того, красная точка перед именем делает меня подозрительным. Имеет ли этот XML-файл был пройден через какой-то редактор слов? –

+0

@wst Я перехожу на local_at, и он все еще не работает ... – Mayoco

ответ

1

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

Таким образом, вместо

population > 5000000

вы бы

number(population[1]) > 5000000

+0

Это работает! Спасибо! – Mayoco

+0

@Mayoco прочитайте о [acceptin g answer] (http://stackoverflow.com/help/someone-answers). Вы должны подумать о принятии ответа, который решает проблему, которую вы задали. благодаря – har07

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