2015-01-23 3 views
0

Xml имеет следующую запись:Невозможно разобрать XML запись

<News:Source>AD HOC News</News:Source> 

Но при использовании STAX XML Parser он игнорирует эту строку:

static final String SOURCE = "News:Source"; 
    XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
    // Setup a new eventReader 
    InputStream in = read(); 
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in); 
    // read the XML document 
     while (eventReader.hasNext()) { 
      XMLEvent event = eventReader.nextEvent(); 
      if (event.isStartElement()) { 
       String localPart = event.asStartElement().getName().getLocalPart(); 
        switch (localPart) { 
        ... 
         case SOURCE: 
          // System.out.println("nothing happens here"); 
          source = getCharacterData(event, eventReader); 
          break; 
        ... 

В чем причина?

+0

Как вы можете получить строку s, которая используется в коммутаторах? – laune

+0

@laune обновленная тема –

+1

Вы используете только локальную деталь. Опустите префикс «Новости». – laune

ответ

1

Как правило, плохая идея использовать префикс пространства имен («Новости») в коде, предназначенном для идентификации элемента XML. Префикс определен где-то в файле XML и полностью независим от фактического идентификатора пространства имен.

Правильная идентификация должна использовать QName.

Если все элементы принадлежат к одному пространству имен, вы можете уйти с использованием только локального имени («Источник»), но каждый должен знать все о файле XML, чтобы иметь возможность гарантировать это.

Позже Ну, это последнее предложение - это то, что вы уже делали в своем коде. Таким образом, просто используйте

static final String SOURCE = "Source"; 
Смежные вопросы