Introduction
Introduction Statistics Contact Development Disclaimer Help
avoid unnecessary fields due to data after tags - xml2tsv - a simple xml-to-tsv…
Log
Files
Refs
Tags
README
LICENSE
---
commit 1e797ce6bffc927a69bc38828b5158dbb68b5950
parent 77a22b4fd5d8f6c9f64245788e5726de78f8c30e
Author: KatolaZ <[email protected]>
Date: Sun, 12 Jan 2020 19:15:56 +0000
avoid unnecessary fields due to data after tags
Avoid to include more fields than needed in a record when there is
some data (e.g., spaces) after the end of a tag
Diffstat:
M xml2tsv.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
---
diff --git a/xml2tsv.c b/xml2tsv.c
@@ -19,6 +19,10 @@
#include "xml.h"
#include "config.h"
+
+#define FALSE 0
+#define TRUE 1
+
/* tag stack */
typedef struct {
@@ -104,7 +108,7 @@ void print_cur_str(FILE *f, tstack_t *t){
/* global variables */
tstack_t st;
-
+char emitsep;
/* xml callbacks */
@@ -174,12 +178,17 @@ xmlcommentend(XMLParser *x)
void
xmldata(XMLParser *x, const char *d, size_t dl)
{
+ if (strcspn(d, " \t\n") && emitsep){
+ printf("%c", SEP);
+ emitsep = FALSE;
+ }
quote_print(stdout, d);
}
void
xmldataend(XMLParser *x)
{
+ emitsep = FALSE;
}
void
@@ -197,7 +206,7 @@ xmldataentity(XMLParser *x, const char *d, size_t dl)
void
xmldatastart(XMLParser *x)
{
- printf("%c", SEP);
+ emitsep = TRUE;
}
void
@@ -239,6 +248,7 @@ int
main(void)
{
stack_init(&st);
+ emitsep = FALSE;
XMLParser x = { 0 };
x.xmlattr = xmlattr;
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.