我想知道在Android中寫入和解析XML文件的最簡單方法是什麼。寫入和讀取XML的最簡單方法
我的要求很簡單。示例文件會是這樣的:
<Item ID="1" price="$100" Qty="20" />
而我只想檢索一個項目的ID和讀取價格和數量。
我指的是Using XmlResourceParser to Parse Custom Compiled XML,但想知道是否有一個輕量級的方法來做一些微不足道的事情(仍然使用標籤)。
我想知道在Android中寫入和解析XML文件的最簡單方法是什麼。寫入和讀取XML的最簡單方法
我的要求很簡單。示例文件會是這樣的:
<Item ID="1" price="$100" Qty="20" />
而我只想檢索一個項目的ID和讀取價格和數量。
我指的是Using XmlResourceParser to Parse Custom Compiled XML,但想知道是否有一個輕量級的方法來做一些微不足道的事情(仍然使用標籤)。
如果真的那麼簡單,你可以用printf()或類似的東西寫出來。
對於解析,您最好使用真正的XML解析器(或許是@ netpork提出的SimpleXML)。但對於一些真正的小事,你可以使用正則表達式 - 這是我通常的設置,你需要主要使用'attrlist'和'stag'(屬性列表和開始標籤)。
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)+\$";
XML規範的草案,甚至包括了XML是「微不足道」的語法,能正確找到節點的邊界,而不是捕捉所有的錯誤,擴大實體引用,等等見https://www.w3.org/TR/WD-xml-lang-970630#secF。
主要缺點是,如果稍後遇到更好的數據,則可能會中斷。例如,某人可能會向您發送帶有註釋的數據,或者是語法錯誤,或者未引用的屬性,或者使用&quo;或其他。
如果您需要解析大量XML數據,您可以嘗試[Simple XML](http://simple.sourceforge.net/)。 – netpork