3

嗨,任何人都可以告诉我如何使用 SimpleXML btw 读取 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>

element-sequence 的大小是可变的,并且 RootElement 内元素的标签是实际名称

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

如果可能的话,有什么方法可以用 SimpleXML序列化它

4

4 回答 4

0

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

于 2012-11-16T13:39:43.797 回答
0

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

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

也可以看看:

将字符串转换为 Srim

Android 使用 SAX 解析器解析 XML

于 2012-11-13T08:53:08.987 回答
0

您可能想使用访客策略

覆盖“读取”方法:

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

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

于 2012-12-17T09:41:32.437 回答
0

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

于 2012-11-13T08:30:08.447 回答