Indicate differences between two XML documents
compareXMLDocs.RdThis function is an attempt to provide some assistance in determining if two XML documents are the same and if not, how they differ. Rather than comparing the tree structure, this function compares the frequency distributions of the names of the node. It omits position, attributes, simple content from the comparison. Those are left to the functions that have more contextual information to compare two documents.
Arguments
- a,b
two parsed XML documents that must be internal documents, i.e. created with
xmlParseor created withnewXMLNode.- ...
additional parameters that are passed on to the
summarymethod for an internal document.
Value
A list with elements
- inA
the names and counts of the XML elements that only appear in the first document
- inB
the names and counts of the XML elements that only appear in the second document
- countDiffs
a vector giving the difference in number of nodes with a particular name.
These give a description of what is missing from one document relative to the other.
Examples
tt =
'<x>
<a>text</a>
<b foo="1"/>
<c bar="me">
<d>a phrase</d>
</c>
</x>'
a = xmlParse(tt, asText = TRUE)
b = xmlParse(tt, asText = TRUE)
d = getNodeSet(b, "//d")[[1]]
xmlName(d) = "bob"
addSibling(xmlParent(d), newXMLNode("c"))
#> [[1]]
#> <c/>
#>
compareXMLDocs(a, b)
#> $inA
#> d
#> 1
#>
#> $inB
#> bob
#> 1
#>
#> $countDiffs
#> c
#> -1
#>