---
name: "SVG::DOM"
section: "3pm"
platform: "linux"
package: "libsvg-perl"
version: "2.87-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SVG::DOM"
---

# SVG::DOM(3pm)

A library of DOM (Document Object Model) methods for SVG objects.

## NAME

SVG::DOM - A library of DOM (Document Object Model) methods for SVG objects.

## SUMMARY

SVG::DOM provides a selection of methods for accessing and manipulating SVG elements through DOM-like methods such as getElements, getChildren, getNextSibling and so on.

## SYNOPSIS

```
    my $svg=SVG->new(id=>"svg_dom_synopsis", width=>"100", height=>"100");
    my %attributes=$svg->getAttributes;
    my $group=$svg->group(id=>"group_1");
    my $name=$group->getElementName;
    my $id=$group->getElementID;
    $group->circle(id=>"circle_1", cx=>20, cy=>20, r=>5, fill=>"red");
    my $rect=$group->rect(id=>"rect_1", x=>10, y=>10, width=>20, height=>30);
    my $width=$rect->getAttribute("width");
    my $has_children=$group->hasChildren();
    my @children=$group->getChildren();
    my $kid=$group->getFirstChild();
    do {
        print $kid->xmlify();
    } while ($kid=$kid->getNextSibling);
    my @ancestors=$rect->getParents();
    my $is_ancestor=$group->isAncestor($rect);
    my $is_descendant=$rect->isDescendant($svg);
    my @rectangles=$svg->getElements("rect");
    my $allelements_arrayref=$svg->getElements();
    $group->insertBefore($newChild,$rect);
    $group->insertAfter($newChild,$rect);
    $rect = $group->replaceChild($newChild,$rect);
    $group->removeChild($newChild);
    my $newRect = $rect->cloneNode($deep);
    ...and so on...
```

## METHODS

### @elements = $obj-\>getElements($element\_name)

Return a list of all elements with the specified name (i.e. type) in the document. If no element name is provided, returns a list of all elements in the document. In scalar context returns an array reference.

### @children = $obj-\>getChildren()

Return a list of all children defined on the current node, or undef if there are no children. In scalar context returns an array reference.

Alias: **getChildElements()**, **getChildNodes()**

### @children = $obj-\>hasChildren()

Return 1 if the current node has children, or 0 if there are no children.

Alias: hasChildElements, **hasChildNodes()**

### $ref = $obj-\>getFirstChild()

Return the first child element of the current node, or undef if there are no children.

### $ref = $obj-\>getLastChild()

Return the last child element of the current node, or undef if there are no children.

### $ref = $obj-\>getSiblings()

Return a list of all children defined on the parent node, containing the current node.

### $ref = $obj-\>getNextSibling()

Return the next child element of the parent node, or undef if this is the last child.

### $ref = $obj-\>getPreviousSibling()

Return the previous child element of the parent node, or undef if this is the first child.

### $index = $obj-\>getChildIndex()

Return the place of this element in the parent node's list of children, starting from 0.

### $element = $obj-\>getChildAtIndex($index)

Returns the child element at the specified index in the parent node's list of children.

### $ref = $obj-\>getParentElement()

Return the parent of the current node.

Alias: **getParent()**

### @refs = $obj-\>getParentElements()

Return a list of the parents of the current node, starting from the immediate parent. The last member of the list should be the document element.

Alias: **getParents()**

### $name = $obj-\>getElementName()

Return a string containing the name (i.e. the type, not the ID) of an element.

Alias: **getType()**, **getTagName()**, **getNodeName()**

### $ref = $svg-\>getElementByID($id)

Alias: **getElementbyID()**

Return a reference to the element which has ID `$id`, or undef if no element with this ID exists.

### $id = $obj-\>getElementID()

Return a string containing the ID of the current node, or undef if it has no ID.

### $ref = $obj-\>getAttributes()

Return a hash reference of attribute names and values for the current node.

### $value = $obj-\>getAttribute($name);

Return the string value attribute value for an attribute of name `$name`.

### $ref = $obj-\>setAttributes({name1=\>$value1,name2=\>undef,name3=\>$value3})

Set a set of attributes. If `$value` is undef, deletes the attribute.

### $value = $obj-\>setAttribute($name,$value);

Set attribute `$name` to `$value`. If `$value` is undef, deletes the attribute.

### $cdata = $obj-\>getCDATA()

Return the canonical data (i.e. textual content) of the current node.

Alias: **getCdata()**, **getData()**

### $boolean = $obj-\>isAncestor($element)

Returns 1 if the current node is an ancestor of the specified element, otherwise 0.

### $boolean = $obj-\>isDescendant($element)

Returns 1 if the current node is a descendant of the specified element, otherwise 0.

### $boolean = $obj-\>insertBefore( $element, $child );

Returns 1 if `$element` was successfully inserted before `$child` in `$obj`

### $boolean = $obj-\>insertAfter( $element, $child );

Returns 1 if `$element` was successfully inserted after `$child` in `$obj`

### $boolean = $obj-\>insertSiblingBefore( $element );

Returns 1 if `$element` was successfully inserted before `$obj`

### $boolean = $obj-\>insertSiblingAfter( $element );

Returns 1 if `$element` was successfully inserted after `$obj`

### $element = $obj-\>replaceChild( $element, $child );

Returns `$child` if `$element` successfully replaced `$child` in `$obj`

### $element = $obj-\>removeChild( $child );

Returns `$child` if it was removed successfully from `$obj`

### $element = $obj-\>cloneNode( $deep );

Returns a new `$element` clone of `$obj`, without parents or children. If deep is set to 1, all children are included recursively.

## AUTHOR

Ronan Oger, ronan@roitsystems.com Martin Owens, doctormo@postmaster.co.uk

## SEE ALSO

[**perl**(1)](/perl/1.md), SVG, SVG::XML, SVG::Element, SVG::Parser

\<http://www.w3c.org/Graphics/SVG/\> SVG at the W3C
