summaryrefslogtreecommitdiffstats
path: root/src/xml/repr-io.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2008-03-07 22:18:56 +0000
committermental <mental@users.sourceforge.net>2008-03-07 22:18:56 +0000
commit31acc450aa0320ab82f5075adf8afbcae0763e6d (patch)
treeef45a9eeb5a7baa754176307396a2837bca879e0 /src/xml/repr-io.cpp
parentFix #include (diff)
downloadinkscape-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.cpp13
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 {