XML/Input: Difference between revisions

→‎{{header|Fortran}}: added Fortran code
m (/*REXX version 2 * / typo)
(→‎{{header|Fortran}}: added Fortran code)
Line 942:
 
xmlparse</lang>
 
 
=={{header|Fortran}}==
 
=== tixi library ===
 
Uses [https://github.com/DLR-SC/tixi tixi library] (+ LibXML, curl as dependencies)
 
<lang fortran>
program tixi_rosetta
use tixi
implicit none
integer :: i
character (len=100) :: xml_file_name
integer :: handle
integer :: error
character(len=100) :: name, xml_attr
xml_file_name = 'rosetta.xml'
 
call tixi_open_document( xml_file_name, handle, error )
i = 1
do
xml_attr = '/Students/Student['//int2char(i)//']'
call tixi_get_text_attribute( handle, xml_attr,'Name', name, error )
if(error /= 0) exit
write(*,*) name
i = i + 1
enddo
 
call tixi_close_document( handle, error )
 
contains
 
function int2char(i) result(res)
character(:),allocatable :: res
integer,intent(in) :: i
character(range(i)+2) :: tmp
write(tmp,'(i0)') i
res = trim(tmp)
end function int2char
 
end program tixi_rosetta
</lang>
 
Compile
<pre>
gfortran tixi_rosetta.f90 tixi.f90 -L../tixi/tixi-master/build/lib/ -lTIXI -lTIXIf -lxml2 -lcurl -o tixi_rosetta.x
</pre>
 
Output
<pre>
./tixi_rosetta.x
April
Bob
Chad
Dave
Émily
</pre>
 
=== Fortran XML library (FoX) ===
Uses [https://github.com/andreww/fox FoX]
 
<lang fortran>
program fox_rosetta
use FoX_dom
use FoX_sax
implicit none
integer :: i
type(Node), pointer :: doc => null()
type(Node), pointer :: p1 => null()
type(Node), pointer :: p2 => null()
type(NodeList), pointer :: pointList => null()
character(len=100) :: name
 
doc => parseFile("rosetta.xml")
if(.not. associated(doc)) stop "error doc"
 
p1 => item(getElementsByTagName(doc, "Students"), 0)
if(.not. associated(p1)) stop "error p1"
! write(*,*) getNodeName(p1)
 
pointList => getElementsByTagname(p1, "Student")
! write(*,*) getLength(pointList), "Student elements"
 
do i = 0, getLength(pointList) - 1
p2 => item(pointList, i)
call extractDataAttribute(p2, "Name", name)
write(*,*) name
enddo
 
call destroy(doc)
end program fox_rosetta
</lang>
 
Output
<pre>
./fox_rosetta.x
April
Bob
Chad
Dave
&mily
</pre>
 
=={{header|Go}}==
Anonymous user