Разбор XML без кавычек в Scala - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь проанализировать какой-то плохо сгенерированный XML-код с помощью scala, который выглядит следующим образом:

<contextfile concordance=brown>
<context filename=br-a01 paras=yes>
<p pnum=1>
<s snum=1> 
<wf cmd=ignore pos=DT>The</wf>
</s>
</p>
...

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

val semCor = XML.loadFile(args(0)) 

бросает

org.xml.sax.SAXParseException: Open quote is expected for attribute "{1}" associated with an  element type  "concordance".

Я хотел бы знать, как, если это вообще возможно, настроить синтаксический анализатор xala scala для правильного анализа этих входных данных, как если бы были кавычки вокруг значений атрибута.

Спасибо за любые предложения!

Ответы [ 3 ]

6 голосов
/ 22 ноября 2011

Невозможно настроить синтаксический анализатор до такой степени в Scala.Однако, поскольку ваш XML имеет неправильный формат, вы можете использовать HTML-библиотеку, например JSoup или TagSoup , чтобы сначала привести в порядок XML, а затем проанализировать его с помощью Scala XML.Или просто получите нужные данные из XMl, используя JSoup напрямую.

2 голосов
/ 22 ноября 2011

Почему вы называете это XML?Это не так.Вы могли бы также сослаться на программу Scala как программу C #.Никакой синтаксический анализатор XML не будет иметь никакого смысла.Вы используете полностью собственный формат для обмена данными, и у вас есть два варианта: вместо этого переключиться на использование XML или написать для него полностью собственный анализатор.

0 голосов
/ 22 ноября 2011

Невозможно настроить парсер. Ваш синтаксический анализатор не примет "не правильно сформированный" XML. Может быть, вы должны рассмотреть первый проход, чтобы добавить цитаты. В общем случае невозможно знать, как справиться с этой проблемой, но в конкретном случае это может быть очень просто, например, если значения атрибута не содержат пробелов, кавычек, символов «&» или «<». *

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