Как мне прочитать переменные с удаленного сервера?

#android #xml #string

#Android #xml #строка

Вопрос:

В настоящее время я работаю над небольшим приложением для удаленного просмотра изображений.

Что мне нужно знать, так это как прочитать строковые переменные из Xml файла на удаленном сервере и поместить их в String[] . Таким образом, моя программа может использовать их так, как я хочу. Все переменные в Xml файле являются строками (Т.Е. «http://www.website.com/image.png «)

Я могу сделать это с помощью локального, Xml но как мне сделать это из удаленного Xml файла?

Ответ №1:

Один из методов заключается в использовании синтаксического анализатора SAX, как описано здесь http://www.codingforandroid.com/2010/12/reading-remote-xml-file-with-sax.html

Комментарии:

1. Я предлагаю также использовать синтаксический анализатор sax

Ответ №2:

Мне просто нужно было загрузить XML для приложения, над которым я работаю. Это метод, который я использую в настоящее время. Вы должны изменить это в соответствии с вашей структурой XML, но это должно дать вам довольно хорошую идею. Я все еще новичок в Java и Android, поэтому их может быть лучшим решением

 private void loadXML()
{
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db;
    try
    {
        db = dbf.newDocumentBuilder();
        try
        {
            Document doc = db.parse(new URL("http://yoursite.com/presentation.xml").openStream());
            Element docElement = doc.getDocumentElement();
            NodeList nl = docElement.getElementsByTagName("Slide");

            if (nl != null amp;amp; nl.getLength() > 0)
            {
                String slideArray[] = new String[nl.getLength()];
                vforumLength = nl.getLength();

                for (int i = 0; i < nl.getLength(); i  )
                {
                    Element slideElement = (Element) nl.item(i);
                    NodeList titleList   = slideElement.getElementsByTagName("Title");
                    Element titleElement = (Element) titleList.item(0);
                    String title         = titleElement.getFirstChild().getNodeValue();
                    slideArray[i]        = title;
                    Log.i("xml",title);
                }
            }
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (SAXException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    catch (ParserConfigurationException e)
    {
        e.printStackTrace();
    }
}
  

и XML:

 <?xml version="1.0" encoding="UTF-8"?>
<vForum>
    <Slides>
        <Slide id="1" tcIn="00:00:00.0" tcOut="00:00:00.0">
            <Title>Title 1</Title>
        </Slide>
        <Slide id="2" tcIn="00:00:00.0" tcOut="00:00:00.0">
            <Title>Title 2</Title>
        </Slide>
        <Slide id="3" tcIn="00:00:00.0" tcOut="00:00:00.0">
            <Title>Title 3</Title>
        </Slide>
        <Slide id="4" tcIn="00:00:00.0" tcOut="00:00:00.0">
            <Title>Title 4</Title>
        </Slide>
        <Slide id="5" tcIn="00:00:00.0" tcOut="00:00:00.0">
            <Title>Title 5</Title>
        </Slide>
    </Slides>
</vForum>
  

мой фактический XML немного сложнее, но я урезал его, чтобы вам не приходилось просматривать нерелевантные данные