Analisar sintático de xml

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="&lt;html&gt;&#13;&#10; &lt;head&gt;&#13;&#10; &lt;style type=&quot;text/css&quot;&gt;&#10; &lt;!--&#10; body { color: #000000; font-family: Dialog; font-size: 12px }&#10; --&gt;&#10; &lt;/style&gt;&#13;&#10; &#13;&#10; &lt;/head&gt;&#13;&#10; &lt;body&gt;&#13;&#10; &lt;/body&gt;&#13;&#10;&lt;/html&gt;&#13;&#10;"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.
 
Back
Topo