2011-11-23 17 views
9

Chciałbym wiedzieć, jaki jest najłatwiejszy sposób zapisu i analizy pliku XML w systemie Android.Najprostszy sposób zapisu i odczytu XML

Moje wymagania są bardzo proste. Przykładowy plik może wyglądać następująco:

<Item ID="1" price="$100" Qty="20" /> 

Chcę tylko pobrać przedmiot według ID i przeczytać cenę oraz ilość.

Miałem na myśli Using XmlResourceParser to Parse Custom Compiled XML, ale zastanawiam się, czy istnieje bardzo lekki sposób, aby zrobić coś trywialnego, jak to (nadal za pomocą tagów).

+1

Jeśli będziesz potrzebować parsować dużo danych XML, możesz spróbować [Simple XML] (http://simple.sourceforge.net/). – netpork

Odpowiedz

0

Jeśli to naprawdę takie proste, możesz po prostu napisać to za pomocą printf() lub podobnego.

Do parsowania najlepiej użyć prawdziwego parsera XML (być może SimpleXML, który zasugerował @netpork). Ale jeśli chodzi o coś naprawdę banalnego, możesz po prostu użyć wyrażenia regularnego - oto mój zwykły zestaw, z którego będziesz potrzebował głównie "attrlist" i "stag" (dla listy atrybutów i tagu startowego).

xname  = "([_\\w][-_:.\\w\\d]*)";   # XML NAME (imperfect charset) 
xnmtoken = "([-_:.\\w\\d]+)";    # 
xncname = "([_\\w][-_.\\w\\d]*)";   # 
qlit  = '("[^"]*"|\'[^\']*\')';   # Includes the quotes 
attr  = "$xname\\s*=\\s*$qlit";   # Captures name and value 
attrlist = "(\\s+$attr)*";     # 
startTag = "<$xname$attrlist\\s*/?>";  # 
endTag  = "</$xname\\s*>";     # 
comment = "(<!--[^-]*(-[^-]+)*-->)";  # Includes delims 
pi   = "(<\?$xname.*?\?>)";    # Processing instruction 
dcl  = "(<!$xname\\s+[^>]+>)";   # Markup dcl (imperfect) 
cdataStart = "(<!\[CDATA\[)";     # Marked section open 
cdataEnd = "(]]>)";       # Marked section close 
charRef = "&(#\\d+|#[xX][0-9a-fA-F]+);"; # Num char ref (no delims) 
entRef  = "&$xname;";      # Named entity ref 
pentRef = "%$xname;";      # Parameter entity ref 
xtext  = "[^<&]*";      # Neglects ']]>' 
xdocument = "^($startTag|$endTag|$pi|$comment|$entRef|$xtext)+\$"; 

projekt specyfikacji XML nawet zawierał „trywialny” gramatyki XML, który może znaleźć granice węzłów poprawnie, ale nie złapać wszystkie błędy, rozszerzając referencje podmiotu czenia zobacz https://www.w3.org/TR/WD-xml-lang-970630#secF.

Główną wadą jest to, że jeśli napotkasz bardziej interesujące dane później, może się zepsuć. Na przykład ktoś może wysyłać do Ciebie dane z komentarzem, błędem składni lub niecytowanym atrybutem, lub używając innej nazwy.

Powiązane problemy