Я получаю приведенный ниже xml-ответ, и мне нужно выполнить синтаксический анализ, чтобы все, что я получаю, это сбор значений URL128 xml Element.Любые идеи о наиболее эффективном способе сделать это в Java?
<?xml version="1.0" encoding="utf-8"?> <imagesXML> <Images> <Image> <ImageUID Scope="Public" Type="Guid" Value="{7f2535d0-9a41-4997-9694-0a4de569e6d9}"/> <CorbisID Scope="Public" Type="String" Value="42-15534232"/> <Title Scope="Public" Type="String" Value="Animal"/> <CreditLine Scope="Public" Type="String" Value="© Robert Llewellyn/Corbis"/> <IsRoyaltyFree Scope="Public" Type="Boolean" Value="False"/><AspectRatio Scope="Public" Type="String" Value="1.500000"/> <URL128 Scope="Public" Type="String" Value="http://cachens.corbis.com/CorbisImage/thumb/15/53/42/15534232/42-15534232.jpg"/> </Image> <Image> <ImageUID Scope="Public" Type="Guid" Value="{7f2535d0-9a41-4997-9694-0a4de569e6d9}"/> <CorbisID Scope="Public" Type="String" Value="42-15534232"/> <Title Scope="Public" Type="String" Value="Animal"/> <CreditLine Scope="Public" Type="String" Value="© Robert Llewellyn/Corbis"/> <IsRoyaltyFree Scope="Public" Type="Boolean" Value="False"/><AspectRatio Scope="Public" Type="String" Value="1.500000"/> <URL128 Scope="Public" Type="String" Value="http://cachens.corbis.com/CorbisImage/thumb/15/53/42/15534232/42-15534232.jpg"/> </Image> </Images> </imagesXML>
API Java XPath прост в использовании:
String xmlData = "<test><one><URL128 myAttribute='value' /></one></test>"; InputSource source = new InputSource(new StringReader(xmlData)); //or use your own input source XPath xPath = XPathFactory.newInstance().newXPath(); NodeList list = (NodeList)xPath.evaluate("//URL128", source, XPathConstants.NODESET); List<Element> elements = new ArrayList<Element>(list.getLength()); for (int i = 0; i < list.getLength(); i++) { elements.add((Element)list.item(i)); }
Используйте SAX и внедрите метод startElement, чтобы, если имя элемента "URL128", вы извлекли три атрибута Scope, Type и Value, сохранили их в пользовательский объект, и добавьте этот объект в List.
startElement
Scope
Type
Value
List
Это будет легко и быстро.