大家有没有人能告诉我如何用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
答案 0 :(得分:0)
看看非常简单的教程可能会对您有所帮助:Java and XML 和Parsing XML Data
答案 1 :(得分:0)
您可以使用Android的SAXParser
来解析字符串。 Parser的XMLReader
所需的InputSource需要输入流,因此您必须将String转换为输入流。您可以使用ByteArrayInputStream
:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
另见:
答案 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”,以确保没有为非映射标记抛出异常。