2015-02-18 4 views
0

Я хочу извлечь ниже данные xml, полученные в строковой переменной, в список. Лучше всего использовать парсер SAX или Xpath, и это самый быстрый способ?Извлечь теги из xml в строку в массив

Было бы полезно, если вы можете направить меня с помощью какого-либо кода.

Строка ввода

<TestEventEntity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Sid>u34u5i435b4ih5b</Sid> 
<UserId>9485924857429857</UserId> 
<TestPercentId>4957493574395</TestPercentId> 
<TestGroup>test2</TestGroup> 
<SessionStartDt>2015-02-17T08:38:18.5179128-06:00</SessionStartDt> 
<Event>my Event</Event> 
</TestEventEntity> 

Ожидаемый результат

[u34u5i435b4ih5b, 9485924857429857,4957493574395, test2,2015-02-17T08: 38: 18.5179128-06: 00, мое событие]

+0

Если вы не столкнетесь с вложенными тегами или не обрабатываете информацию о структуре ниже уровня корня + 1 особым образом, саксовый парсер должен быть достаточным. Однако в этом случае вам, вероятно, вообще не нужен синтаксический анализ. – collapsar

ответ

0

Для сравнения парсеров, look here. Для вашей цели SAX выглядит как лучший вариант.

Для кода SAXParser: Вам нужен поток XML или файл и класс Handler (описанный here)

0

Я не уверен, что о производительности, но следующий код простой способ сделать то, что вы хочу:

File xmlFile = new File("path/to/file.xml"); 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(xmlFile); 
doc.getDocumentElement().normalize(); 
//Get childs of root tag 
NodeList elementsUnderRootTag = doc.getElementsByTagName("rootTagName").item(0).getChildNodes(); 
//Iterating over childs of root node 
for (int i = 0; i < elementsUnderRootTag.getLength(); i++) { 
    Node child = elementsUnderRootTag.item(i); 
    if (child.getNodeType() == Node.ELEMENT_NODE) { 
     Element elm = (Element) child; 
     System.out.pringln(elm.getTextContent()); 
    } 
} 

Для получения дополнительной информации о различных видах разбора файла XML (или строки, а), посмотри на here. Там есть что-то, что вы хотите с запуском образцов кода.

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