## Licensed to the Apache Software Foundation (ASF) under one ## or more contributor license agreements. See the NOTICE file ## distributed with this work for additional information ## regarding copyright ownership. The ASF licenses this file ## to you under the Apache License, Version 2.0 (the ## "License"); you may not use this file except in compliance ## with the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, ## software distributed under the License is distributed on an ## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ## KIND, either express or implied. See the License for the ## specific language governing permissions and limitations ## under the License. #macro ( recursive $e $indent ) #if( $e.getChildren().size() > 0 ) $indent <$e.getName()> #foreach ($child in $e.getChildren() ) #recursive( $child "$indent " ) #end $indent #else $indent <$e.getName()> $indent $e.getTextTrim() $indent #end #end #set($i = " ") First, we print out the document tree with a recursive Velocimacro : #recursive( $root.getRootElement() $i ) Next, we access pieces of data directly : email : $root.getRootElement().getChild("properties").getChild("author").getChild("email").getText() last name : $root.getRootElement().getChild("properties").getChild("author").getChild("name").getChild("last").getChild("full").getText()