是否可以使用简单 XML 在 Java 中将 XML 标记的内容作为字符串获取?
我正在尝试使用 Converter 来做到这一点.我可以得到 <tag1>
作为InputNode对象,但没有 API 可以将内容检索为字符串。我可以用 InputNode.getNext()
迭代 children 并通过递归检索名称、属性、值等来重建内容...但我永远无法确定它是否与原始 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();
}
这种方法可行,但有两个缺陷:
- 不保留属性的顺序,因为 SimpleXML 将属性放入映射中,并且属性迭代的顺序与映射键的顺序相同。
- 这无法解析嵌套在 InputNode 的直接子节点中的标签,或者至少我不知道如何获取子节点的子节点列表。
关于java - 如何在 SimpleXML (Java) 中将 InputNode 获取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389019/