Используйте Java для разбора XML на определенный элемент - PullRequest
1 голос
/ 10 августа 2011

Я получаю приведенный ниже 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>

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

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));
}
2 голосов
/ 10 августа 2011

Используйте SAX и внедрите метод startElement, чтобы, если имя элемента "URL128", вы извлекли три атрибута Scope, Type и Value, сохранили их в пользовательский объект, и добавьте этот объект в List.

Это будет легко и быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...