【问题标题】:Reading XML with SimpleXML使用 SimpleXML 读取 XML
【发布时间】:2012-11-01 16:36:25
【问题描述】:

您好,谁能告诉我如何使用 SimpleXML 读取 xml 标签及其值。我正在构建一个安卓应用程序。

我需要获取根元素内的所有标签和值:

<RootElement>
   <UnknownTab>UnkownValue</UnkownTab>
   <AnotherUnknownTab>UnkownValue</AnotherUnknownTab>
</RootElement>

RootElement 中的元素数量也是未知的,并且每次都可能不同。

更新:

我已经将 SimpleXml 用于我正在执行的所有其他序列化,因此我不想使用另一个 XML 解析工具。 问题是如何使用 SimpleXml 做到这一点,而不是如何序列化 xml。

更新 2: 我已经查看了 XML(它有点复杂),定义如下:

xsd 定义:

<element-sequence> 
   <element name="actualName" ..../>
   <element name="actualName" ..../>
   <element name="actualName" ..../>
   .
   .
   .
</element-sequence>

元素序列的大小是可变的 并且 RootElement 内元素的标签是实际名称

<RootElement>
   <actualName>UnkownValue</actualName>
   <actualName>UnkownValue</actualName>
   .
   .
   .
</RootElement>

有没有办法序列化这个,如果可能的话,使用 SimpleXML

【问题讨论】:

标签: java android xml xml-serialization simple-framework


【解决方案1】:

看看非常简单的教程可能会对您有所帮助:Java and XML Parsing XML Data

【讨论】:

    【解决方案2】:

    您可以使用Android的SAXParser来解析String。 Parser 的XMLReader 所需的 InputSource 需要输入流,因此您必须将 String 转换为输入流。您可以为此使用ByteArrayInputStream

    InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
    

    另见:

    Convert String into Strim

    Android Parsing XML using SAX Parser

    【讨论】:

      【解决方案3】:

      使用 SimpleXML 看起来这是不可能的,使用 XPath 完成了这项工作。

      【讨论】:

        【解决方案4】:

        您可能想使用Visitor Strategy

        重写“读取”方法:

        @Override
        public void read(Type type, NodeMap<InputNode> node) throws Exception {
        

        让您可以访问 NodeMap。使用 node.getNode() 您可以检索实际的当前 InputNode 和例如查询它的名称和值。您可能需要确保在 RootElement 注释中使用了“strict=false”,以确保没有为非映射标签引发异常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-06
          • 1970-01-01
          • 2012-10-03
          • 2011-06-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多