2015-06-02 10 views
1

Я могу использовать SAX, XMLPullParser, я могу анализировать данные обобщенного формата. Но я борюсь, чтобы разобрать эти форматированные данные XML, как показано ниже:Как разобрать этот вид XML в android

<?xml version="1.0" encoding="utf-8"?> 
<Data Branch="True" > 
    <Branch 
     BranchClosingDate="" 
     BranchOpeningDate="01/01/1990 00:00:00" 
     DistrictId="19" 
     Id="981" 
     IsActive="True" 
     IsLocal="True" 
     LocalName="154" 
     LocationType="1" 
     MobileNumber="123" 
     Name="Dhaperhat" /> 
</Data> 
+1

Какие проблемы вы столкнулись? Android имеет синтаксический анализатор xml, и вы можете легко разобрать xml. –

+0

я могу разобрать этот любопытное XML-данных: 12010109Y 2,00 7,99 Но выше формат раздражает меня ... –

+0

Ваш XML является просто у вас есть тег Branch и этот тег имеет несколько атрибутов. поэтому проверьте в google, как получить значение атрибута тега с помощью парсера pull. –

ответ

0

Проверить эту ссылку, она будет обеспечивать автоматизированный класс, который будет анализировать все ваши данные в формате XML. На сайте есть генератор, который будет генерировать классы Java, которые вы можете использовать в своем проекте.

Check this link

+2

У него есть синтаксический анализ с xml, а не с wsdl. –

+0

Спасибо, брат, но я не ищу эту любопытную вещь, у меня есть локальный файл XML на SD-карте, и вам нужно его разобрать. Выше формат раздражает меня ... –

1

Кажется, вы не знаете, как разобрать атрибуты узлов.

С помощью парсера DOM вы можете использовать метод узла Node для доступа к атрибутам, с помощью анализатора SAX вы можете использовать getAttributeValue() класса XmlPullParser.

+0

общественного недействительными StartElement (String URI, String LocalName, String QName, \t \t \t Атрибуты атрибутов) бросает SAXException { \t \t currentElement = истина; \t \t if (qName.equals ("Branch")) { \t \t \t int length = attributes.getLength(); \t \t \t для (INT I = 0; я <длина; я ++) { \t \t \t \t String Name = attributes.getQName (I); \t \t \t \t System.out.println ("BranchClosingDate:" + name); \t \t \t \t Строковое значение = attributes.getValue (i); \t \t \t \t System.out.println ("BranchOpeningDate:" + значение); \t \t \t} \t \t} \t} Я решил эту проблему таким образом ... –

+0

Так что это даже проще, когда вы получите передал атрибуты в любом случае. Я не делаю много XML в эти дни, но казалось, что вам просто нужен намек на то, что это ваши атрибуты. – Ridcully

1

Шаги для разбора XML-фид следующим образом:

01 .As described in Analyze the Feed, identify the tags you want to include 
    in your app. This example extracts data for the entry tag and its nested 
    tags title, link, and summary. 

02 .Create the following methods: 
    -> A "read" method for each tag you're interested in. For example, 
     readEntry(), readTitle(), and so on. The parser reads tags from 
     the input stream. When it encounters a tag named entry, title, 
     link or summary, it calls the appropriate method for that tag. 
     Otherwise, it skips the tag. 
    -> Methods to extract data for each different type of tag and to advance 
     the parser to the next tag.For example: 

     * For the title and summary tags, the parser calls readText(). 
      This method extracts data for these tags by calling 
      parser.getText(). 

     * For the link tag, the parser extracts data for links by first 
      determining if the link is the kind it's interested in. Then it 
      uses 
      parser.getAttributeValue() to extract the link's value. 

     * For the entry tag, the parser calls readEntry(). This method 
      parses the entry's nested tags and returns an Entry object with 
      the data members title, link, and summary. 

    -> A helper skip() method that's recursive. For more discussion of this 
     topic, see Skip Tags You Don't Care About.This snippet shows how the 
     parser parses entries, titles, links, and summaries. 
0

Я решил эту проблему с помощью SAX и DefaultHandler,

public void startElement(String uri, String localName, String qName, 
      Attributes attributes) throws SAXException { 
     currentElement = true; 
     db = new DatabaseHelper(thecontext); 
     if (qName.equals("Asa.Amms.Data.Entity.User")) { 
      int length = attributes.getLength(); 
      for (int i = 0; i < length; i++) { 
       String name = attributes.getQName(i); 
       if (name.equals("Id")) { 
        id = Integer.parseInt(attributes.getValue(i)); 
       } 
       if (name.equals("Login")) { 
        LoginID = attributes.getValue(i).toString(); 
       } 
       if (name.equals("Name")) { 
        Name = attributes.getValue(i).toString(); 
       } 
       if (name.equals("Password")) { 
        Password = attributes.getValue(i).toString(); 
       } 
       if (name.equals("ProgramOfficerId")) { 
        user_ProgramOfficerId = Integer.parseInt(attributes.getValue(i).toString()); 
       } 
      } 
      Log.i("Baal dhukbe", id + LoginID + Name + Password); 

      db.insertUser(id, LoginID, Name, Password, user_ProgramOfficerId); 
     } 
}