<div dir="ltr">OK, that sort of clears things up for me. It still confuses me how an SVG can be loaded with this:<br><div><a href="http://cairographics.org/documentation/cairomm/reference/classCairo_1_1SvgSurface.html">http://cairographics.org/documentation/cairomm/reference/classCairo_1_1SvgSurface.html</a></div>
<div>and rendered by Cairo without actually breaking down the DOM at some point and, if that is happening, why it isn't converted into native objects or data structures which would be accessible. </div><div><br></div>
<div>What I need isn't necessarily a scene graph in whole as I need no actual rendering capability. I really just need to be able to manipulate the SVG data and I would like to do that in an object-oriented and language-native way, rather than hacking through XML with an XML library like Nokogiri. That no library like this seems to exist surprises me. I was really expecting to find something like COLLADA DOM (but hopefully easier to use) for SVG.</div>
<div><br></div><div>For now I'll just hack the XML as I really only need to change colors. It feels like a poor way to do it but I guess I have no choice. Thanks for the help anyway!</div><div><br></div><div>-Rei<br><div class="gmail_extra">
<br><br><div class="gmail_quote">2014/1/5 David Young <span dir="ltr"><<a href="mailto:dyoung@pobox.com" target="_blank">dyoung@pobox.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>On Sat, Jan 04, 2014 at 12:46:58PM +0900, 影月 零 wrote:<br>

> I mean open the SVG, then iterate through all the vector objects in it and<br>
> alter them somehow; like change the color attribute or make all their lines<br>
> into dashed lines.<br>
><br>
> To be more sepcific, I would like to be able to open an SVG, iterate<br>
> through each vector object in it applying some change along the way, then<br>
> write out a new SVG.<br>
><br>
> At the moment I'm using RSVG[2] and Cairo, but I'm assuming it's Cairo that<br>
> does all the actual image manipulation. I guess my question could also be<br>
> re-phrased as:<br>
> Does Cairo or any other library re-instantiate objects from items in the<br>
> DOM of an SVG file when it opens them? If so where are they and how can I<br>
> iterate over them?<br>
<br>
</div>It sounds like you're looking for the "scene graph,"<br>
<<a href="http://en.wikipedia.org/wiki/Scene_graph" target="_blank">http://en.wikipedia.org/wiki/Scene_graph</a>>, corresponding to the SVG.<br>
AFAIK, Cairo isn't based on a scene graph.<br>
<br>
Dave<br>
<span><font color="#888888"><br>
--<br>
David Young<br>
<a href="mailto:dyoung@pobox.com" target="_blank">dyoung@pobox.com</a>    Urbana, IL    <a href="tel:%28217%29%20721-9981" value="+12177219981" target="_blank">(217) 721-9981</a><br>
</font></span><div><div>--<br>
cairo mailing list<br>
<a href="mailto:cairo@cairographics.org" target="_blank">cairo@cairographics.org</a><br>
<a href="http://lists.cairographics.org/mailman/listinfo/cairo" target="_blank">http://lists.cairographics.org/mailman/listinfo/cairo</a></div></div></blockquote></div><br></div></div></div>