编写和读取XML的最简单方法



我想知道在Android中写入和解析XML文件的最简单方法是什么。

我的要求很简单。一个示例文件类似于:

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

我只想通过ID检索商品并读取价格和数量。

我指的是使用XmlResourceParser来解析自定义编译的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;等等。

您可以使用XmlPullParser进行首次解析。然后我建议根据查询的复杂性或数据的大小将数据存储在sqlliteshared preferences中。

https://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html

相关内容

  • 没有找到相关文章

最新更新