filipe1996
Membro
Num âmbito de um trabalho escolar, em que o objetivo é fazer a leitura de um código xml e passar gerar esse ficheiro em latex, usando lex e yacc, e estou com dificuldades para eliminar parte do lixo dentro das tags do xml.
<ProjectAuthor="BrunoVieira"CommentTableSortAscending="false"CommentTableSortColumn="Date Time"Description="<html> <head> <style type="text/css"> <!-- body { color: #000000; font-family: Dialog; font-size: 12px } --> </style> </head> <body> </body> </html> "DocumentationType="html"ExportedFromDifferentName="false"ExporterVersion="12.2"Name="untitled"TextualAnalysisHighlightOptionCaseSensitive="false"UmlVersion="2.x"Xml_structure="simple">
<DBTableBacklogActivityId="0"DataModel="Physical"Documentation_plain=""Id="mgROAsaGAqFiAQs"Name="Produto"OrmSyncState="Not Sync"PmAuthor="BrunoVieira"PmCreateDateTime="2018-05-08T16:50:11.289"PmLastModified="2018-05-08T17:14:57.921"PrimaryKeyClustered="Unspecified"PrimaryKeyConstraintNamePattern=""QualityScore="-1"SyncType="Not Sync"Type="0"Unlogged="false"UserIDLastNumericValue="0">
//código lex
%{
#include "y.tab.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
%}
%option noyywrap
%option yylineno
%%
"<Project" return IPROJECT;
"</Project" return FPROJECT;
"<DBTable" return IDBTABLE;
"</DBTable" return FDBTABLE;
"<DBColumn" return IDBCOLUMN;
"</DBColumn" return FDBCOLUMN;
[A-Za-z0-9]* {strcpy(yylval.str,yytext); return (TEXTO);}
> return '>';
. ;
[ \t\n] ;
%%
//Parte do coódigo do ficheiro de yacc
{
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int yylex();
int yyerror(char *);
extern int yylineno;
%}
%union {char str[1000];}
%token IPROJECT FPROJECT IDBTABLE FDBTABLE IDBCOLUMN FDBCOLUMN
%token<str> TEXTO
%start xml //definir o axioma
%%
xml :
| IPROJECT TEXTO lixo {printf("inicio projeto\n");} '>' project {printf("proj\n");} FPROJECT '>'
;
project: tabela project
;
...
%%
int main(){
yyparse(); //Analisador sintatico
return 0;
}
int yyerror(char *str){
fprintf(stderr,"Linha: %d ,Erro: %s\n",yylineno,str);
return 0;
}
Eu consigo limpar tudo o que está nas tags com este código, mas não consigo deixar só uma parte do código xml. Eu queria deixar o que não está a negrito e apagar o resto. Será que alguém me pode ajudar?
Obrigado.
<ProjectAuthor="BrunoVieira"CommentTableSortAscending="false"CommentTableSortColumn="Date Time"Description="<html> <head> <style type="text/css"> <!-- body { color: #000000; font-family: Dialog; font-size: 12px } --> </style> </head> <body> </body> </html> "DocumentationType="html"ExportedFromDifferentName="false"ExporterVersion="12.2"Name="untitled"TextualAnalysisHighlightOptionCaseSensitive="false"UmlVersion="2.x"Xml_structure="simple">
<DBTableBacklogActivityId="0"DataModel="Physical"Documentation_plain=""Id="mgROAsaGAqFiAQs"Name="Produto"OrmSyncState="Not Sync"PmAuthor="BrunoVieira"PmCreateDateTime="2018-05-08T16:50:11.289"PmLastModified="2018-05-08T17:14:57.921"PrimaryKeyClustered="Unspecified"PrimaryKeyConstraintNamePattern=""QualityScore="-1"SyncType="Not Sync"Type="0"Unlogged="false"UserIDLastNumericValue="0">
//código lex
%{
#include "y.tab.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
%}
%option noyywrap
%option yylineno
%%
"<Project" return IPROJECT;
"</Project" return FPROJECT;
"<DBTable" return IDBTABLE;
"</DBTable" return FDBTABLE;
"<DBColumn" return IDBCOLUMN;
"</DBColumn" return FDBCOLUMN;
[A-Za-z0-9]* {strcpy(yylval.str,yytext); return (TEXTO);}
> return '>';
. ;
[ \t\n] ;
%%
//Parte do coódigo do ficheiro de yacc
{
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int yylex();
int yyerror(char *);
extern int yylineno;
%}
%union {char str[1000];}
%token IPROJECT FPROJECT IDBTABLE FDBTABLE IDBCOLUMN FDBCOLUMN
%token<str> TEXTO
%start xml //definir o axioma
%%
xml :
| IPROJECT TEXTO lixo {printf("inicio projeto\n");} '>' project {printf("proj\n");} FPROJECT '>'
;
project: tabela project
;
...
%%
int main(){
yyparse(); //Analisador sintatico
return 0;
}
int yyerror(char *str){
fprintf(stderr,"Linha: %d ,Erro: %s\n",yylineno,str);
return 0;
}
Eu consigo limpar tudo o que está nas tags com este código, mas não consigo deixar só uma parte do código xml. Eu queria deixar o que não está a negrito e apagar o resto. Será que alguém me pode ajudar?
Obrigado.