fromGXL-methods {graph} | R Documentation |
GXL http://www.gupro.de/GXL is "an XML sublanguage designed to be a standard exchange format for graphs". This document describes tools in the graph package for importing GXL data to R and for writing graph data out as GXL.
fromGXL |
currently returns a graphNEL when possible. This
function is based on xmlEventParse with handlers defined
in the function NELhandler. The dump()
element of this handler should emit information on
all children of nodes and edges; the asGraphNEL()
element will return a graphNEL object with weights
if child <attr> with name attribute "weights" is
present for each edge element. |
toGXL |
for an input of class "graphNEL", returns an object of class c("XMLInternalDOM", "XMLOutputStream"); see the example for how to convert this to a text stream encoding XML |
dumpGXL |
returns an R list with all the node, edge, and named attribute information specified in the GXL stream |
validateGXL |
returns silently (invisibly returns the parsed tree) for a DTD-compliant stream, or is otherwise very noisy |
At present, toGXL does not return a validating GXL stream
because XML package does not properly handle the dtd and namespaces
arguments to xmlTree. This is being repaired. To fix
the stream, add
<!DOCTYPE gxl SYSTEM "http://www.gupro.de/GXL/gxl-1.0.1.dtd">
as second record in the output.
Some structures in a graphNEL and some tags in GXL may not be handled at this time.
Vince Carey <stvjc@channing.harvard.edu>
sf <- file(system.file("GXL/simpleExample.gxl", package="graph")) show(fromGXL(sf)) print(dumpGXL(sf)) close(sf) #validateGXL(sf) # bad <- file(system.file("GXL/c2.gxl", package="graph")) # here's how you can check if the GXL is well-formed, if # you have a libxml2-based version of R XML package # # try( validateGXL(bad) ) # gR <- new("graphNEL", nodes=letters[1:4], edgeL=list( a=list(edges=4), b=list(edges=3), c=list(edges=c(2,1)), d=list(edges=1)), edgemode="directed") # # following requires that you are using XML bound with recent libxml2 # #an <- as.numeric #if (an(libxmlVersion()$major)>=2 && an(libxmlVersion()$minor)>=4) cat(saveXML(toGXL(gR)$value())) wtd <- file(system.file("GXL/kmstEx.gxl", package="graph")) wtdg <- fromGXL(wtd) close(wtd) print(edgeWeights(wtdg))