projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Document all the elements, plus the attributes of heading.
[pspp]
/
parse-xml.c
diff --git
a/parse-xml.c
b/parse-xml.c
index 85fbaf05feee574064ef5c8ccedcbc7d3297d98c..ad1b41833d2908b4b4714cdfc8bd8342a058b782 100644
(file)
--- a/
parse-xml.c
+++ b/
parse-xml.c
@@
-67,7
+67,7
@@
print_attributes (xmlNode * a_node)
{
for (xmlNode *node = a_node; node; node = node->next)
{
{
for (xmlNode *node = a_node; node; node = node->next)
{
- if (node->properties)
+ if (node->properties
&& node->parent->type != XML_DOCUMENT_NODE
)
{
printf ("%s", node->name);
for (xmlAttr *attr = node->properties; attr; attr = attr->next)
{
printf ("%s", node->name);
for (xmlAttr *attr = node->properties; attr; attr = attr->next)
@@
-79,6
+79,19
@@
print_attributes (xmlNode * a_node)
}
}
}
}
+static void
+print_attribute (xmlNode *node, const char *attr)
+{
+ for (; node; node = node->next)
+ {
+ const char *s = (char *) xmlGetProp (node, (xmlChar *) attr);
+ if (s)
+ puts (s);
+
+ print_attribute (node->children, attr);
+ }
+}
+
static void
usage (void)
{
static void
usage (void)
{
@@
-107,6
+120,8
@@
main (int argc, char **argv)
print_containment (root);
else if (!strcmp(argv[2], "attributes"))
print_attributes (root);
print_containment (root);
else if (!strcmp(argv[2], "attributes"))
print_attributes (root);
+ else if (!strncmp(argv[2], "attr:", 5))
+ print_attribute (root, argv[2] + 5);
else if (!strcmp(argv[2], "labels"))
print_labels (root);
else
else if (!strcmp(argv[2], "labels"))
print_labels (root);
else