我正在开发一个自称很酷的项目,用户可以用Sql语法提取Xml数据。
<?ml version="1.0" encoding="utf-8"?>
<data attr1='some data' attr2='some data'>
<personalData>
<name>Mario</name>
<lastName>Legenda</lastName>
<birthData>
<day>18</day>
<month num="06">june</month>
<godina>1986</godina>
</birthData>
<sex>M</sex>
<death>N/A</death>
<OIB>569874125369</OIB>
<JMBG>25698745212</JMBG>
<misc>
<employed>n</employed>
<student>n</student>
<intelligence>n</intelligence>
<tolerant>n</tolerant>
<specialPowers>n</specialPowers>
<married>n</married>
<relationshipStatus>n</relationshipStatus>
<socialLife>n</socialLife>
</misc>
</presonalData>
</data>
要获取整个数据&#39;标签,sql将是SELECT data FROM path/to/file/data.xml
。在确定类之后验证语法是否正确,数据提取开始。
我想用正则表达式做这个项目,而不是使用Dom,SimpleXml或其他我希望更好地学习正则表达式。所以......我试图评估这些数据是否属于&#39;指定的xml中的标记存在。我这样做......
preg_match('#<data\s?([\w]+=[\w]+\s?)+?>#i', $XmlAsString, $match);
?
运营商给了我麻烦。它似乎并不知道\ s是一个空的空间。所以他只给我$match
数组中的attr2属性。
答案 0 :(得分:0)
如果您能找到一种方法,这将是一个非常酷的项目,因为已建立的计算机科学理论认为XML不是常规语言(其定义是递归的),因此无法通过正则表达式解析。如果你做了这项工作,你就会反驳出计算机科学的基本定理。