Codenameone读取xml标签

时间:2016-12-23 20:32:50

标签: java xml codenameone

我正在使用Codename One的XML解析器来解析看起来像这样的XML文件:

<string name="P0001">aaaaaaaaaaaaaaaaaa</string>
<string name="P0002">bbbbbbbbbbbbbbbbbb</string>
<string name="P0003">cccccccccccccccccc</string>

我正在使用以下代码来解析此文件:

XMLParser parser = new XMLParser();

Element elem = parser.parse(new InputStreamReader(myInput, "UTF-8"));

for(Element e : elem) {

   //this returns P0001/2/3
   String attr = e.getAttribute("name");

   //how do I get the aaaaaaaaa String?
}

那么如何在此代码中获取文本元素?

1 个答案:

答案 0 :(得分:0)

这不是很直观,因为DOM要求文本元素位于单独的元素中,因为如果您在文本中混合标记,它就不会“知道”。例如。像这样的东西是完全合法的XML:

<string>aaaaaa<sometag/>aaaaa</string>

因此XML解析器将其分解为单独的实体,因此在这种情况下它将如下所示:

Entity = String
   TextEntity = aaaaaa
   Entity = sometag
   TextEntity = aaaaaa

在你的情况下,这是多余的,因为你知道中间不会有标签但是为了兼容性DOM仍然使用相同的语义sp得到文本子应该像这样工作:

Element child = (Element)e.getTextChildren(null, true).get(0);
Log.p(child.getText());

注意我过度简化并假设不会出现像<string name="P0004">这样的情况,但我确信如果需要,你将能够弄清楚如何处理......