|
|
|
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые форумчане. Необходимо написать парсер для HTML, чтобы разбирать страницы и на их основании формировать соответствующие платёжные документы в АБС, для чего я использовал Gold Parser (), предлагаемый на сайте файл грамматики HTML не подошёл из-за некоторой кривизны в реализации (не работает конструкция <тег [пареметры]>Текст</тег>), в следствии чего пришлось его реализовывать своими силами. Но вот незадача - моя реализация грамматики (равно, как и грамматика с сайта, кка потом выяснилось) не может корректно обрабатывать конструкции TABLE. В тестовом примере HTML-кода, использующем данную конструкцию, при разборе вылетает ошибка: "Expecting one of the following tokens: Char CharNumDec CharNumHex Color ID Number String1 String2" в строке: <TABLE border=0 align=center> в значении center. Если в данном коде убрать align=center - ошибка вылетает в выражении: <TD><STRONG>Приходный кассовый ордер №</STRONG></TD>: ошибка - "Cannot recognize token П". В чём может быть дело? Тестовый скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Грамматика: "Start Symbol" = <HTML> ! -------------------- Identifiers Comment Start = '<!--' Comment End = '-->' {ID Tail} = {Alphanumeric} + [-/] {Hex Digit} = {Digit} + [abcdefABCDEF] {StringChars1} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ["] {StringChars2} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - [''] {ParaChars} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - [<>] ID = {Letter}{ID Tail}* Number = {Digit}+ | {Digit}+ '.' {Digit}+ Color = '#' {Hex Digit}+ Char = '&' {Letter}+ ';' CharNumDec = '' {Digit}+ ';' CharNumHex = '' {Hex Digit}+ ';' String1 = '"' {StringChars1}* '"' String2 = '' {StringChars2}* '' SpecString = '>' {ParaChars}{ParaChars}* '</' ! -------------------- Start symbol <HTML> ::= <DocOpt> '<html' <Parameters> '>' <Webpage> '</html>' | ! --------------------- Parameters <Parameters> ::= <Parameter> <Parameters> | <Parameter> ::= ID '=' ID | ID '=' Number | ID '=' Color | ID '=' String1 | ID '=' String2 | ID '=' Char | ID '=' CharNumDec | ID '=' CharNumHex | ID | String1 ! ----------------------- Word <Word> ::= SpecString ! ----------------------- DocOpt <DocOpt> ::= '<!doctype' <Parameters> '>' | ! ----------------------- Webpage <Webpage> ::= <Head> <Body> ! ----------------------- Head <Head> ::= '<head' <Parameters> '>' <Head Items> '</head>' | ! ----------------------- Head Items <Head Items> ::= <Head Item> <Head Items> | <Head Item> ::= '<title' <Parameters> '>' <Content> '</title>' | '<title' <Parameters> <Word> 'title>' | '<meta' <Parameters> '>' | '<link' <Parameters> '>' | '<base' <Parameters> '>' | '<basefont' <Parameters> '>' | '<script' <Parameters> '>' <Content> '</script>' | '<script' <Parameters> <Word> 'script>' ! ---------------------- Body <Body> ::= '<body' <Parameters> '>' <Content> '</body>' | '<body' <Parameters> <Word> 'body>' | ! ---------------------- Tag <Tag> ::= '<img' <Parameters> '>' | '<br' <Parameters> '>' | '<hr' <Parameters> '>' | '<p' <Parameters> '>' <Content> '</p>' | '<p' <Parameters> <Word> 'p>' | '<h1' <Parameters> '>' <Content> '</h1>' | '<h1' <Parameters> <Word> 'h1>' | '<h2' <Parameters> '>' <Content> '</h2>' | '<h2' <Parameters> <Word> 'h2>' | '<h3' <Parameters> '>' <Content> '</h3>' | '<h3' <Parameters> <Word> 'h3>' | '<h4' <Parameters> '>' <Content> '</h4>' | '<h4' <Parameters> <Word> 'h4>' | '<h5' <Parameters> '>' <Content> '</h5>' | '<h5' <Parameters> <Word> 'h5>' | '<h6' <Parameters> '>' <Content> '</h6>' | '<h6' <Parameters> <Word> 'h6>' | '<a' <Parameters> '>' <Content> '</a>' | '<a' <Parameters> <Word> 'a>' | '<map' <Parameters> '>' <Map Items> '</map>' | '<b' <Parameters> '>' <Content> '</b>' | '<b' <Parameters> <Word> 'b>' | '<u' <Parameters> '>' <Content> '</u>' | '<u' <Parameters> <Word> 'u>' | '<em' <Parameters> '>' <Content> '</em>' | '<em' <Parameters> <Word> 'em>' | '<i' <Parameters> '>' <Content> '</i>' | '<i' <Parameters> <Word> 'i>' | '<strike' <Parameters> '>' <Content> '</strike>' | '<strike' <Parameters> <Word> 'strike>' | '<strong' <Parameters> '>' <Content> '</strong>' | '<strong' <Parameters> <Word> 'strong>' | '<font' <Parameters> '>' <Content> '</font>' | '<font' <Parameters> <Word> 'font>' | '<big' <Parameters> '>' <Content> '</big>' | '<big' <Parameters> <Word> 'big>' | '<small' <Parameters> '>' <Content> '</small>' | '<small' <Parameters> <Word> 'small>' | '<sup' <Parameters> '>' <Content> '</sup>' | '<sup' <Parameters> <Word> 'sup>' | '<sub' <Parameters> '>' <Content> '</sub>' | '<sub' <Parameters> <Word> 'sub>' | '<blockquote' <Parameters> '>' <Content> '</blockquote>' | '<blockquote' <Parameters> <Word> 'blockquote>' | '<address' <Parameters> '>' <Content> '</address>' | '<address' <Parameters> <Word> 'address>' | '<code' <Parameters> '>' <Content> '</code>' | '<code' <Parameters> <Word> 'code>' | '<cite' <Parameters> '>' <Content> '</cite>' | '<cite' <Parameters> <Word> 'cite>' | '<caption' <Parameters> '>' <Content> '</caption>' | '<caption' <Parameters> <Word> 'caption>' | '<samp' <Parameters> '>' <Content> '</samp>' | '<samp' <Parameters> <Word> 'samp>' | '<kbd' <Parameters> '>' <Content> '</kbd>' | '<kbd' <Parameters> <Word> 'kbd>' | '<tt' <Parameters> '>' <Content> '</tt>' | '<tt' <Parameters> <Word> 'tt>' | '<center' <Parameters> '>' <Content> '</center>' | '<cemter' <Parameters> <Word> 'center>' | '<span' <Parameters> '>' <Content> '</span>' | '<span' <Parameters> <Word> 'span>' | '<div' <Parameters> '>' <Content> '</div>' | '<div' <Parameters> <Word> 'div>' | '<applet' <Parameters> '>' <Params> '</applet>' | '<object' <Parameters> '>' <Params> '</object>' | '<table' <Parameters> '>' <Table Rows> '</table>' | '<ul' <Parameters> '>' <List Items> '</ul>' | '<ol' <Parameters> '>' <List Items> '</ol>' | '<dir' <Parameters> '>' <List Items> '</dir>' | '<menu' <Parameters> '>' <List Items> '</menu>' | '<dl' <Parameters> '>' <Def Items> '</dl>' | '<form' <Parameters> '>' <Content> '</form>' | '<form' <Parameters> <Word> 'form>' | '<input' <Parameters> '>' | '<textarea' <Parameters> '>' <Content> '</textarea>' | '<textarea' <Parameters> <Word> 'textarea>' | '<select' <Parameters> '>' <Options> '</select>' ! ---------------------- Content <Content> ::= <Tag> <Content> | ! --------------------- Map items <Map Items> ::= <Area> <Map Items> | <Area> ::= '<area' <Parameters> '>' ! -------------------- Params <Params> ::= '<param' <Parameters> '>' <Params> | ! ------------------- Table Rows <Table Rows> ::= <Table Row> <Table Rows> | <Table Row> ::= '<tr' <Parameters> '>' <Table Cells> '</tr>' | '<tbody' <Parameters> '>' '<tr' <Parameters> '>' <Table Cells> '</tr>' '</tbody>' <Table Cells> ::= <Table Cell> <Table Cells> | <Table Cell> ::= '<td' <Parameters> '>' <Content> '</td>' | '<td' <Parameters> <Word> 'td>' | '<th' <Parameters> '>' <Content> '</th>' | '<th' <Parameters> <Word> 'th>' ! ------------------- List Items <List Items> ::= <List Item> <List Items> | <List Item> ::= '<li' <Parameters> '>' <Content> '</li>' | '<li' <Parameters> <Word> 'li>' ! ------------------- Def Items <Def Items> ::= <Def Item> <Def Items> | <Def Item> ::= '<dt' <Parameters> '>' <Content> '</dt>' | '<dt' <Parameters> <Word> 'dt>' | '<dd' <Parameters> '>' <Content> '</dd>' | '<dd' <Parameters> <Word> 'dd>' ! -------------------- Options <Options> ::= <Option> <Options> | <Option> ::= '<option' <Parameters> '>' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 07:23 |
|
||
|
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
|
|||
|---|---|---|---|
|
#18+
Conner, может быть не стоит формировать платежные документы на основе хтмл парсинга? как-то это не очень :) нет ли возможности воспользоваться хмл или другими, более подходящими форматами? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 10:35 |
|
||
|
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
|
|||
|---|---|---|---|
|
#18+
К сожалению нет. Организация, присылающая нам данные документы, видимо не знает ничего, кроме HTML. Если бы был XML - проблем не было б никаких... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 11:46 |
|
||
|
Gold Parser and HTML. Проблеммы с обработкой тегов <TABLE>
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Решение нашёл... Код. "Name" = 'HTML' "Author" = 'John Conner' "Version" = '1.2' "About" = 'HyperText Markup Language' "Start Symbol" = <HTML> ! -------------------------------- Identifiers Comment Start = '<!--' Comment End = '-->' {ID Tail} = {Alphanumeric} + [-/_] {ID Tail1} = {Cyrillic} + {Cyrillic Supplementary} + [-/_] {Hex Digit} = {Digit} + [abcdefABCDEF] {StringChars1} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - ["] {StringChars2} = {Printable} + {Cyrillic} + {Cyrillic Supplementary} - [''] {ParaChars} = {ANSI Printable} + {Cyrillic} + {Cyrillic Supplementary} - [<>&^] {Letter1} = {Cyrillic} + {Cyrillic Supplementary} ID = {Letter}{ID Tail}* ID1 = {Letter1}{ID Tail1}* Number = {Digit}+ | {Digit}+ '.' {Digit}+ Color = '#' {Hex Digit}+ Char = '&' {Letter}+ ';' CharNumDec = '' {Digit}+ ';' CharNumHex = '' {Hex Digit}+ ';' String1 = '"' {StringChars1}* '"' String2 = '' {StringChars2}* '' SpecString = '^' {ParaChars}{ParaChars}* '^' ! -------------------------------- Start symbol <HTML> ::= <DocOpt> '<html' <Parameters> '>' <Webpage> '</html>' | ! -------------------------------- Parameters <Parameters> ::= <Parameter> <Parameters> | <Parameter> ::= ID '=' ID | ID '=' Number | ID '=' Color | ID '=' String1 | ID '=' String2 | ID '=' Char | ID '=' CharNumDec | ID '=' CharNumHex | ID | ID '=' ID1 | String1 | String2 ! ---------------------------------- Word <Word> ::= SpecString ! ---------------------------------- DocOpt <DocOpt> ::= '<!doctype' <Parameters> '>' | ! ---------------------------------- Webpage <Webpage> ::= <Head> <Body> ! --------------------------------- Head <Head> ::= '<head' <Parameters> '>' <Head Items> '</head>' | ! -------------------------------- Head Items <Head Items> ::= <Head Item> <Head Items> | <Head Item> ::= '<title' <Parameters> '>' <Content> '</title>' | '<meta' <Parameters> '>' | '<link' <Parameters> '>' | '<base' <Parameters> '>' | '<basefont' <Parameters> '>' | '<script' <Parameters> '>' <Content> '</script>' ! ------------------------------- Body <Body> ::= '<body' <Parameters> '>' <Content> '</body>' | ! ------------------------------ Tag <Tag> ::= '<img' <Parameters> '>' | '<br' <Parameters> '>' | '<hr' <Parameters> '>' | '<p' <Parameters> '>' <Content> '</p>' | '<h1' <Parameters> '>' <Content> '</h1>' | '<h2' <Parameters> '>' <Content> '</h2>' | '<h3' <Parameters> '>' <Content> '</h3>' | '<h4' <Parameters> '>' <Content> '</h4>' | '<h5' <Parameters> '>' <Content> '</h5>' | '<h6' <Parameters> '>' <Content> '</h6>' | '<a' <Parameters> '>' <Content> '</a>' | '<map' <Parameters> '>' <Map Items> '</map>' | '<b' <Parameters> '>' <Content> '</b>' | '<u' <Parameters> '>' <Content> '</u>' | '<em' <Parameters> '>' <Content> '</em>' | '<i' <Parameters> '>' <Content> '</i>' | '<strike' <Parameters> '>' <Content> '</strike>' | '<font' <Parameters> '>' <Content> '</font>' | '<big' <Parameters> '>' <Content> '</big>' | '<small' <Parameters> '>' <Content> '</small>' | '<sup' <Parameters> '>' <Content> '</sup>' | '<sub' <Parameters> '>' <Content> '</sub>' | '<blockquote' <Parameters> '>' <Content> '</blockquote>' | '<address' <Parameters> '>' <Content> '</address>' | '<code' <Parameters> '>' <Content> '</code>' | '<cite' <Parameters> '>' <Content> '</cite>' | '<caption' <Parameters> '>' <Content> '</caption>' | '<samp' <Parameters> '>' <Content> '</samp>' | '<kbd' <Parameters> '>' <Content> '</kbd>' | '<tt' <Parameters> '>' <Content> '</tt>' | '<center' <Parameters> '>' <Content> '</center>' | '<strong' <Parameters> '>' <Content> '</strong>' | '<span' <Parameters> '>' <Content> '</span>' | '<div' <Parameters> '>' <Content> '</div>' | '<applet' <Parameters> '>' <Params> '</applet>' | '<object' <Parameters> '>' <Params> '</object>' | '<table' <Parameters> '>' <Content> '</table>' | '<ul' <Parameters> '>' <Content> '</ul>' | '<ol' <Parameters> '>' <Content> '</ol>' | '<dir' <Parameters> '>' <Content> '</dir>' | '<menu' <Parameters> '>' <Content> '</menu>' | '<dl' <Parameters> '>' <Content> '</dl>' | '<form' <Parameters> '>' <Content> '</form>' | '<input' <Parameters> '>' | '<textarea' <Parameters> '>' <Content> '</textarea>' | '<select' <Parameters> '>' <Options> '</select>' | '<tr' <Parameters> '>' <Content> '</tr>' | '<tbody' <Parameters> '>' <Content> '</tbody>' | '<th' <Parameters> '>' <Content> '</th>' | '<td' <Parameters> '>' <Content> '</td>' | '<li' <Parameters> '>' <Content> '</li>' | '<dt' <Parameters> '>' <Content> '</dt>' | '<dd' <Parameters> '>' <Content> '</dd>' ! --------------------------------------- Content <Content> ::= <Tag> <Content> | Char <Content> | CharNumDec <Content> | CharNumHex <Content> | <Word> <Content> | ! -------------------------------------- Map Items <Map Items> ::= <Area> <Map Items> | <Area> ::= '<area' <Parameters> '>' ! ------------------------------------- Params <Params> ::= '<param' <Parameters> '>' <Params> | ! ------------------------------------- Options <Options> ::= <Option> <Options> | <Option> ::= '<option' <Parameters> '>' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37109313&tid=1343145]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 477ms |

| 0 / 0 |
