【问题标题】:How to get embbed XML from XML如何从 XML 中获取嵌入 XML
【发布时间】:2011-04-04 09:27:21
【问题描述】:

我有一个小问题,在向服务器发送请求期间,我得到了带有嵌入 xml 的 xml。应用程序在 Android 2.1 上运行,所以我不能只使用 getTextContent() 来获取价值,所以我使用 Node.getFirstChild().getNodeValue(); 并且对于带有文本的标准节点它工作正常,但对于其中嵌入了 xml 的节点,它不是。有人有什么建议或有同样的问题吗?如何解决。

顺便说一句:当我检查节点的类型时,所有的都是 1,所以这意味着 ELEMENT_NODE。

【问题讨论】:

  • 好吧,我找到了解决方案,在获得价值之前使用 Node.noramlize();
  • 效果很好,谢谢!需要注意的一点是,您需要对高于 XML 文本所在级别的级别进行规范化,以便将其展平为一个子节点。 (顺便说一句,您应该回答自己的问题,以便将其标记为已回答)

标签: android xml dom xml-parsing


【解决方案1】:

您究竟从服务器收到什么?类似的东西;

<?xml version="1.0"?>
<embedded-xml>
  <?xml version="1.0"?>
  <data/>
</embedded-xml>

或者;

<?xml version="1.0"?>
<embedded-xml>
  <data/>
</embedded-xml>

在后一种情况下,您可以简单地检索数据节点(不是值),无需单独解析它,而第一种情况并不完全有效 afaik。

【讨论】:

    【解决方案2】:

    您不能在 XML 文档中嵌入任意 XML 文档,因为 XML 文档可能包含对于首先需要嵌入 XML 的 CDATA 部分非法的序列。

    如果任务能够嵌入并提取任意 XML 文档,则必须对 XML 文档进行编码,然后将其嵌入到 CDATA 部分中。原因是 CDATA 的结束标记是“]]>”,如果(任意)嵌入文档包含 CDATA 节,则该文档 CDATA 节的“]]>”标记将关闭父级中的 CDATA 节。

    根据我的经验,在 XML 中嵌入 XML 的最佳方法是先压缩(因为 Base64 编码会炸毁它……),然后是 Base64 编码。我采用这种方法的原因是因为它是万无一失的,并且两种转换(某种压缩器和 base64 编码/解码)广泛可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多