Hi,
Question 1:
I want to compare two xml documents and find out what are all the bookmarks are modified.
When using compare method, I am able to get the revisions but from the revision i am not able to get the corresponding bookmark. Is there any way to get the respective bookmark from the revision?
Question 2:
Currently, in order to get the edited bookmarks. I foolwed the below approach
1.Loaded both source(Original.xml) and destination xml(Modified.xml) as Aspose wordml documents.
2.Iterate through all the bookmarks in the source document and extract content for each bookmark and generate separate document for each bookmark. Similarly for destination documents. Now comparing each source bookmark document with destination bookmark document. If revisions are present for that bookmark document then concluded that bookmark edited.
For extracting content and generating document I used below methods
ArrayList extractContent(Node startNode, Node endNode, boolean isInclusive)
Document generateDocument(Document srcDoc, ArrayList nodes)
In generate document method I used keep source formatting
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
The problem now I am facing is which comparing source bookmark document with destination bookmark document. I am getting revision that style Normal_0 change, but I didn’t modify anything related to style.
while generating bookmark document and appending the source bookmark content.Normal_0 is created.
Please let me know hoe to overcome this issue.
The below code I used to acheive this
public static Map<String, Integer> getAsposeCompareResult(
String sourceFileContent, String destFileContent, Map<String, Integer> asposeCompareResult) {
try {
LoadOptions loadOption = new LoadOptions();
loadOption.setLoadFormat(LoadFormat.WORD_ML);
Document srcDoc = new Document(“C:\Users\muthu\Desktop\Aspose\Original.xml”, loadOption);
Document destDoc = new Document(“C:\Users\muthu\Desktop\Aspose\Modified.xml”,loadOption);
String guid = null;
BookmarkCollection srcBookMarks = srcDoc.getRange().getBookmarks();
for (int i = 0; i < srcBookMarks.getCount(); i++) {
Bookmark srcBookMark = srcBookMarks.get(i);
String srcBookMarkName = srcBookMark.getName();
System.out.println(srcBookMarkName);
ArrayList srcExtractedNodesInclusive = extractContent(
srcBookMark.getBookmarkStart(),
srcBookMark.getBookmarkEnd(), true);
Document srcChoreoDoc = generateDocument(srcDoc,
srcExtractedNodesInclusive);
Bookmark destBookmark = destDoc.getRange().getBookmarks()
.get(srcBookMarkName);
if (destBookmark != null) {
ArrayList destExtractedNodesInclusive = extractContent(
destBookmark.getBookmarkStart(),
destBookmark.getBookmarkEnd(), true);
Document desChoreoDoc = generateDocument(destDoc,
destExtractedNodesInclusive);
srcChoreoDoc.compare(desChoreoDoc, “ChoreCompare”,
new Date());
if (srcChoreoDoc.getRevisions().getCount() == 0) {
System.out.println(destBookmark.getName()
+ " are equal");
} else {
System.out.println(destBookmark.getName()
+ " has change");
System.out.println(srcChoreoDoc.getRevisions()
.getCount());
for (Revision rev : srcChoreoDoc.getRevisions()) {
System.out.println(rev.getRevisionType());
if (rev.getRevisionType() == RevisionType.DELETION) {
System.out.println(“Term Deleted–>”
+ destBookmark.getName()
+ “Rev Node Type---->”
+ rev.getParentNode().getNodeType()
+ “---->”
+ rev.getRevisionType()
+ “------>”
+ rev.getParentNode().toString(
SaveFormat.HTML));
}
if (rev.getRevisionType() == RevisionType.FORMAT_CHANGE) {
System.out.println(“Term Format Change–>”
+ destBookmark.getName()
+ “Rev Node Type---->”
+ rev.getParentNode().getNodeType()
+ “---->”
+ rev.getRevisionType()
+ “------>”
+ rev.getParentNode().toString(
SaveFormat.HTML));
}
if (rev.getRevisionType() == RevisionType.STYLE_DEFINITION_CHANGE) {
System.out.println(“Term Style Change–>”
+ destBookmark.getName()
+ “Rev Node Type---->”
+ rev.getParentStyle().getName()
+ “---->” + rev.getRevisionType()
+ “------>”
+ rev.getParentStyle().getName());
}
if (rev.getRevisionType() == RevisionType.MOVING) {
System.out.println(“Term Moving–>”
+ destBookmark.getName()
+ “Rev Node Type---->”
+ rev.getParentStyle().getName()
+ “---->” + rev.getRevisionType()
+ “------>”
+ rev.getParentStyle().toString());
}
if (rev.getRevisionType() == RevisionType.INSERTION) {
System.out.println(“Term inserted–>”
+ destBookmark.getName()
+ “Rev Node Type---->”
+ rev.getParentNode().getNodeType()
+ “---->”
+ rev.getRevisionType()
+ “------>”
+ rev.getParentNode().toString(
SaveFormat.HTML));
}
}
}
} else {
}
System.out.println(“Revision Ended for Bookmark”);
}
} catch (Exception e) {
e.printStackTrace();
}
return asposeCompareResult;
}