2016-12-23 3 views
-2

Я использую Codename One в XML-парсер для разбора файла XML, который выглядит следующим образом:Codenameone чтения 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

Тег <строка имя = «P0001»> aaaaaaaaaaaaaaaa – user2355811

+0

Какой код у вас пробовал? –

+1

Возможный дубликат [xml dom parser find tag по имени в java] (http://stackoverflow.com/questions/11800931/xml-dom-parser-find-tag-by-name-in-java) –

ответ

0

Это не очень интуитивно понятно, так как DOM требует, чтобы текстовый элемент находился в отдельном элементе, поскольку он не «знает», если вы смешиваете теги в тексте. Например. что-то вроде этого является абсолютно законным XML:

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

Так что синтаксический анализатор брейки XML это на отдельные лиц, так и в этом случае она будет выглядеть следующим образом:

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

В вашем случае это является излишним, так как вы знаете, не будет теги в середине, но для DOM совместимости все еще использует ту же семантику зр получения текста дети должны работать так:

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

Примечание Я более упрощенным и не ssumed будет ни одного случая, как <string name="P0004">, но я уверен, что вы будете в состоянии понять, как справиться с этим в случае необходимости ...

+0

Спасибо всем. Возможно, я не очень хорошо объяснил это, но мне нужна функция, которая возвращает текст «aaaaaaaaaaaaa» всякий раз, когда я отправляю «P0001» и/или «ccccccccccccccccc» при отправке «P0003» и так далее. Помните, что файл xml имеет приблизительно 3500 строк. В представленном примере читается только первая запись xml. Спасибо. – user2355811

+0

XML в ответе попадает в цикл for в отредактированном вопросе, он будет работать, как ожидалось. –

Смежные вопросы