XML将数据添加到ArrayList <string> </string>

时间:2014-12-15 06:11:16

标签: java xml

我正在解析一些xml,现在我正在尝试获取某些节点的文本值。这是xml

<menu>
<day name="monday">
    <meal name="BREAKFAST">
        <counter name="Bread">
           <dish>
               <name>Plain Bagel</name>
           </dish>
        <counter/>
    <meal/>
<day/>
<day name="tuesday">
    <meal name="LUNCH">
        <counter name="Other">
           <dish>
               <name>Cheese Bagel</name>
           </dish>
        <counter/>
    <meal/>
<day/>

现在我正在使用XMLPullParser及其工作,除了在get文本区域。

所以在获取文本的情况下我有这个:

case XmlResourceParser.TEXT:
            itemsArray.add(xmlData.getText());
             Log.i(TAG, "a"+xmlData.getText()+"b");
      break;

所以它添加了项目Plain Bagel和Cheese Bagel很棒,但是在onProgressUpdate方法中,当我记录结果时我看到了这个:

[
,
,
, Plain Bagel,
,
,
, Cheese Bagel]

我虽然这些只是\ n字符,所以我试过这个,但我仍然得到了相同的结果。

if (!xmlData.getText().equals("\n")) {...

那么我怎样才能摆脱这些空行或者它们是什么呢?

感谢您的帮助。

当我记录此

Log.i(TAG, xmlData.getText().length() + "");
Log.i(TAG, xmlData.getText());

我得到这个结果

4
12-15 06:28:58.868    5849-5880/com.spencer.ueat I/DiningItemsActivity﹕ [ 12-15 06:28:58.868  5849: 5880 I/DiningItemsActivity ]
    5
12-15 06:28:58.868    5849-5880/com.spencer.ueat I/DiningItemsActivity﹕ [ 12-15 06:28:58.868  5849: 5880 I/DiningItemsActivity ]
    1
12-15 06:28:58.868    5849-5880/com.spencer.ueat I/DiningItemsActivity﹕ [ 12-15 06:28:58.868  5849: 5880 I/DiningItemsActivity ]
    34
12-15 06:28:58.869    5849-5880/com.spencer.ueat I/DiningItemsActivity﹕ Vegetable Samosa with Yogurt Sauce
12-15 06:28:58.869    5849-5880/com.spencer.ueat I/DiningItemsActivity﹕ 5

困惑我??

2 个答案:

答案 0 :(得分:1)

你应该修剪文字。因为解析器为您提供了带空格的字符串,并为标记之间的每个字符串提供了\ n的字符串

case XmlResourceParser.TEXT:
if (xmlData.getText().trim().length() > 0) 
{
   itemsArray.add(xmlData.getText());
   Log.i(TAG, "a"+xmlData.getText()+"b");
}
break;

答案 1 :(得分:0)

你可以这样:

if (xmlData.getText().trim().length > 0) {...