Как разобрать локальный XML-файл и использовать его внутренний тег в Android? - PullRequest
0 голосов
/ 07 декабря 2011

Я хочу проанализировать локальный XML-файл, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?>
<categories>
<category>
  <id>1</id>
  <name>Main name</name>
  <subcategories>
    <count>1</count>
    <subcategory>
      <id>2</id>
      <name>Sub name</name>
      <products>
        <count>5</count>
        <product>
          <id>1</id>
          <name>fullname</name>
          <description>this is full name and something</description>
          <color>white</color>
          <size>xyz</size>
          <images>
            <count>2</count>
            <image>
              <title>test</title>
              <url>www.test.com/test1.jpg</url>
            </image>
          </images>
        </product>
      </products>
    </subcategory>
  </subcategories>
</category>
<category>
  <id>2</id>
  <name>other name</name>
  <subcategories>
    <count>1</count>
    <subcategory>
      <id>2</id>
      <name>other name subname</name>
      <products>
        <count>5</count>
        <product>
          <id>1</id>
          <name>patname of othername</name>
          <description>this isapt name and something</description>
          <color>white</color>
          <size>xyz</size>
          <images>
            <count>2</count>
            <image>
              <title>test</title>
              <url>www.test.com/test1.jpg</url>
            </image>
          </images>
        </product>
      </products>
    </subcategory>
  </subcategories>
</category>
</categories>

Как я могу проанализировать этот локальный XML-файл в Android и как я могу использовать его внутренний тег, как здесь, в категории тегов, у него есть идентификаторы 1 и 2, поэтому, если идентификатор категории равен 1, чем print или user, все содержимое внутреннего тега этого категория и тд. И как я могу использовать содержимое внутреннего тега обеих категорий в Android?

Ответы [ 3 ]

0 голосов
/ 07 декабря 2011

пример вы найдете здесь: http://www.jondev.net/articles/Android_XML_SAX_Parser_Example

0 голосов
/ 07 декабря 2011

Нет, нет, в этом случае нельзя использовать SAXParser, поскольку многие теги имеют одно и то же имя ... лучше использовать XPath: http://developer.android.com/reference/javax/xml/xpath/package-summary.html

0 голосов
/ 07 декабря 2011

Парсинг прост и одинаков во всех приложениях, используйте любой пример парсера SAX или любой другой для простого разбора XML.Вам не нужно беспокоиться о платформе, которую вы используете, будь то Android или нет!

  public class AttendanceXMLParser {

public static final String STUDENT_ATTENDANCE = "student_attendance";

public List<Attendance> parseXML(String xml) {
    List<Attendance> attendanceList = new ArrayList<Attendance>();

    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder;
    try {
        dBuilder = documentBuilderFactory.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));

        Document document = dBuilder.parse(is);

        NodeList attendanceNodeList = document.getElementsByTagName(STUDENT_ATTENDANCE);
        int nodeListLength = attendanceNodeList.getLength();
        Attendance attendance = null;
        for(int i=0; i<nodeListLength; i++) {
            attendance = new Attendance();
            Node messageNode = attendanceNodeList.item(i);
            //
            attendance.setStudentName(messageNode.getFirstChild().getTextContent());
            attendance.setCourseName(messageNode.getChildNodes().item(1).getTextContent());
            attendance.setSemester(messageNode.getChildNodes().item(2).getTextContent());
            attendance.setAttendance(messageNode.getChildNodes().item(3).getTextContent());
            attendanceList.add(attendance);
        }
        return attendanceList;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

}

пожалуйста, найдите код, он на самом деле выполняет анализ простого списка посещаемости на основена узле student_attendance и функции сгенерировать список посещаемости студентов, внимательно прочитайте код, это может помочь вам в полной мере !!

...