使用SimpleXML读取XML

时间:2012-11-13 08:27:36

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

大家有没有人能告诉我如何用SimpleXML btw读取xml标签的值。我正在构建一个Android应用程序。

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

<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中元素的标签是actualNames

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

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

另见:

Convert String into Strim

Android Parsing XML using SAX Parser

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可能想要使用Visitor Strategy

覆盖“读取”方法:

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

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