我正在使用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?
}
那么如何在此代码中获取文本元素?
答案 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">
这样的情况,但我确信如果需要,你将能够弄清楚如何处理......