java - 如何在 SimpleXML (Java) 中将 InputNode 获取为字符串

标签 java android simple-framework

是否可以使用简单 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/

相关文章:

Java volatile 关键字未按预期工作

java - 编写中/大型系统时的问题

java - 获取 InterruptedException 以忽略中断

java - 在 Simple 中使用 @Text 注释反序列化元素列表

java - 使用 simple-xml 时转换 Point 对象

java - 简单 - XML 引用解析

java - 如何防止Android应用程序多次加载?

java - 我的 android xxxhdpi 模拟器显示黑屏

android - 我如何使用 EditText 而不是 TextView 并单击一次打开 datePicker?

android - 如何为无法选择的微调器设置标题..?