是否可以使用简单XML在Java中以字符串形式获取XML标记的内容?
我正在尝试使用Converter做到这一点。我可以将<tag1>
视为InputNode对象,但是没有API可以将内容作为String检索。我可以使用InputNode.getNext()
迭代这些子项,并通过递归检索名称,属性,值等来重建内容……但是我永远无法确定它是否与原始XML匹配。
例:
<root>
<tag1>
<unknownTag>Unknown</unknownTag>
<otherUnknownTag>
<children1>hello</children1>
<children2>bye</children2>
</otherUnknownTag>
</tag1>
<tag2>
...
</tag2>
</root>
我想以字符串的形式检索
<tag1>
的以下内容(并防止对所有<tag1>
子级进行反序列化):<unknownTag>Unknown</unknownTag>
<otherUnknownTag>
<children1>hello</children1>
<children2>bye</children2>
</otherUnknownTag>
在反序列化时,
<tag1>
的内容未知。 最佳答案
据我所知,这仅是部分可能的。这是我走了多远:
public String getNodeAsString(InputNode node) throws Exception {
StringBuilder builder = new StringBuilder();
String value = node.getValue();
if (value != null) {
builder.append(value);
}
InputNode child = node.getNext();
while (child != null) {
builder.append("<").append(child.getName());
for (String attribute : child.getAttributes()) {
builder.append(" ")
.append(attribute)
.append("=\"")
.append(child.getAttribute(attribute).getValue())
.append("\"");
}
builder.append(">")
.append(child.getValue())
.append("</").append(child.getName()).append(">");
value = node.getValue();
if (value != null) {
builder.append(value);
}
child = child.getNext();
}
return builder.toString();
}
这种工作但有两个缺陷:
关于java - 如何在SimpleXML(Java)中将InputNode作为字符串获取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44389019/