Convert recursively tags with children into a string.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(xml_file), | intent(in) | :: | self |
XML file. |
||
type(xml_tag), | intent(in) | :: | tag |
XML tag with children. |
||
logical, | intent(inout) | :: | is_done(:) |
List of stringified tags. |
||
character(len=:), | intent(inout), | allocatable | :: | tag_string |
Output string containing the current tag. |
recursive pure subroutine stringify_recursive(self, tag, is_done, tag_string) !< Convert recursively tags with children into a string. class(xml_file), intent(in) :: self !< XML file. type(xml_tag), intent(in) :: tag !< XML tag with children. logical, intent(inout) :: is_done(:) !< List of stringified tags. character(len=:), allocatable, intent(inout) :: tag_string !< Output string containing the current tag. integer(I4P) :: t !< Counter. if (tag%children_number>0) then tag_string = tag_string//new_line('a')//tag%stringify(is_indented=.true., only_start=.true.) do t=1, tag%children_number call self%stringify_recursive(tag=self%tag(tag%child_id(t)), is_done=is_done, tag_string=tag_string) is_done(tag%child_id(t)) = .true. enddo tag_string = tag_string//new_line('a')//tag%stringify(is_indented=.true., only_end=.true.) else tag_string = tag_string//new_line('a')//tag%stringify(is_indented=.true.) endif endsubroutine stringify_recursive