diff options
| author | MenTaLguY <mental@rydia.net> | 2008-03-07 22:18:56 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2008-03-07 22:18:56 +0000 |
| commit | 31acc450aa0320ab82f5075adf8afbcae0763e6d (patch) | |
| tree | ef45a9eeb5a7baa754176307396a2837bca879e0 /src/xml/repr-io.cpp | |
| parent | Fix #include (diff) | |
| download | inkscape-31acc450aa0320ab82f5075adf8afbcae0763e6d.tar.gz inkscape-31acc450aa0320ab82f5075adf8afbcae0763e6d.zip | |
add basic support for preserving processing instructions in the AST
(bzr r4987)
Diffstat (limited to 'src/xml/repr-io.cpp')
| -rw-r--r-- | src/xml/repr-io.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp index 28e7c4f21..26537d750 100644 --- a/src/xml/repr-io.cpp +++ b/src/xml/repr-io.cpp @@ -395,10 +395,10 @@ sp_repr_do_read (xmlDocPtr doc, const gchar *default_ns) root = NULL; break; } - } else if ( node->type == XML_COMMENT_NODE ) { - Node *comment=sp_repr_svg_read_node(rdoc, node, default_ns, prefix_map); - rdoc->appendChild(comment); - Inkscape::GC::release(comment); + } else if ( node->type == XML_COMMENT_NODE || node->type == XML_PI_NODE ) { + Node *repr=sp_repr_svg_read_node(rdoc, node, default_ns, prefix_map); + rdoc->appendChild(repr); + Inkscape::GC::release(repr); } } @@ -463,6 +463,9 @@ sp_repr_svg_read_node (Document *xml_doc, xmlNodePtr node, const gchar *default_ if (node->type == XML_COMMENT_NODE) return xml_doc->createComment((const gchar *)node->content); + if (node->type == XML_PI_NODE) + return xml_doc->createPI((const gchar *)node->name, (const gchar *)node->content); + if (node->type == XML_ENTITY_DECL) return NULL; sp_repr_qualified_name (c, 256, node->ns, node->name, default_ns, prefix_map); @@ -717,6 +720,8 @@ sp_repr_write_stream (Node *repr, Writer &out, gint indent_level, repr_quote_write (out, repr->content()); } else if (repr->type() == Inkscape::XML::COMMENT_NODE) { out.printf( "<!--%s-->", repr->content() ); + } else if (repr->type() == Inkscape::XML::PI_NODE) { + out.printf( "<?%s %s?>", repr->name(), repr->content() ); } else if (repr->type() == Inkscape::XML::ELEMENT_NODE) { sp_repr_write_stream_element(repr, out, indent_level, add_whitespace, elide_prefix, repr->attributeList(), inlineattrs, indent); } else { |
