java - 从Java中的Xml获取元素内的评论元素
问题描述
**`我在 jaxb 中解析 xml 时遇到问题,它删除了注释节点。为此,我创建了一个方法,我将 xml 标记和路径存储在 map 中,稍后在 jaxb 中解析 xml 后再次放置和安排正确的路径对于那些评论。存储在地图中。然后通过创建评论节点并使用 node.insertBefore(createComment, refChild) 方法放置这些评论。建议。我在 jaxb 中解析 xml 时遇到问题,它删除了注释节点。为此,我创建了一个方法,我将 xml 标记和路径存储在 map 中,稍后在 jaxb 中解析 xml 后再次放置和安排正确的路径那些评论。存储在地图中。然后通过创建评论节点并使用 node.insertBefore(createComment, refChild) 方法放置这些评论。建议。我在 jaxb 中解析 xml 时遇到问题,它删除了评论节点。为此,我创建了一种方法,我将 xml 标记和路径存储在 map 中,稍后在 jaxb 中解析 xml 后再次放置和安排这些注释的正确路径。存储在地图中。然后通过创建评论节点并使用 node.insertBefore(createComment, refChild) 方法放置这些评论。
我的问题是,在更新这个 xml 文件后,它变得像,
由于 node.insertBefore() 方法,注释行放置在第一个位置和第二个位置。任何人都可以建议如何克服它并将该值尽快放在以前的相同位置`**
private static void updateComments(final Document document, final Map<String, Comment> commentNodeMap,
final Map<String, Node> elementNodeMap, final Map<Comment, Integer> commentIntMap) {
Set<String> keys = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(final String s1, final String s2) {
if (s1.length() != s2.length()) {
return s1.length() - s2.length();
}
String[] split1 = s1.split(Constants.COMMENT_SEPARATOR);
String[] split2 = s2.split(Constants.COMMENT_SEPARATOR);
Integer i1 = Integer.parseInt(split1[0]);
Integer i2 = Integer.parseInt(split2[0]);
if (((i1 - i2) == 0) && !split1[1].equals(split2[1])) {
return split1[1].compareTo(split2[1]);
}
return i1 - i2;
}
});
keys.addAll(commentNodeMap.keySet());
for (String exp : keys) {
String[] split2 = exp.split(Constants.COMMENT_SEPARATOR);
Node node = elementNodeMap.get(split2[1]);
if (node != null) {
Comment comment = commentNodeMap.get(exp);
List<Node> updatedNList = new ArrayList<>();
for (int i = 0; i < node.getChildNodes().getLength(); i++) {
updatedNList.add(node.getChildNodes().item(i));
}
Integer integer = commentIntMap.get(comment);
if (integer != null) {
Comment createComment = document.createComment(comment.getData());
updatedNList.add(integer, createComment);
if ((integer + 1) < updatedNList.size()) {
Node refChild = updatedNList.get(integer + 1);
node.insertBefore(createComment, refChild);
}
else {
node.appendChild(createComment);
}
}
}
}
}
Xml Code before:
<shipments>
<shipment id="011">
<department>XXXX<!--ProductXXXXX--></department>
</shipment>
</shipments>
之后的 XML 代码:
<shipments>
<shipment id="011">
<department><!--ProductXXXXX-->XXXX</department>
</shipment>
</shipments>
Thanks in advance
解决方案
推荐阅读
- sql - 查找系列中的最新时间
- swift - 如何刷新使用SDWebImage缓存的tableView中的存储参考数据?
- android - 前台抬头通知未显示
- r - R:如何绑定具有匹配和不匹配列名的多个数据框?
- jquery - 为什么我的 typeahead.js 不显示 ajax 调用的菜单?
- ios - SwiftUI - 如何在图像上添加前景线性渐变
- prolog - 适用于从记录中提取 OneToMany 关系的约束编程
- jquery - 在 iFrame 中查找图像,均具有生成的 ID
- powerbi - 如何使用 DAX 查找具有相同 ID 的 2 个或多个元素的值之间的差异
- visual-studio-code - 在 vs 代码中包装多行注释