gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:02 24 4
gpt4 key购买 nike

我想知道在 Android 中写入和解析 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; 或其他任何内容。

关于android - 编写和读取 XML 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com