2014-03-27 35 views
0

我想弄清楚如何获取一个简单的自定义xml文件(其实际上是一个EML文件,但simpeXML无论如何都可以),并将标记名和文本接下来(我认为simpleXML称他们为孩子),并将它们放入带有键/值对的MAP中。我已经看过这个网站上的一些例子,以及其他一些关于转换为数组等的例子,但它们对于我的需求来说似乎都非常复杂。我应该注意到,我的自定义xml不包含任何属性,并且此转换只需要使用我的自定义xml文件,而不是任何其他人。在php中使用simplexml将xml转换为MAP不是json

所以我的EML文件的一个简单的例子是在这里

<lesson> 
<unit>4</unit> 
</lesson> 

所以后来基本上是我想是一张地图,或任何一个键/值集合称为PHP中,这将使我:

Map[0](lesson,null) 
Map[1](unit,4) 

重要的是我得到空值(或空字符串也可以),所以我可以验证eml文件是有效的。我需要使用php来验证它,而不是使用名称空间验证程序或dtd文件或完成的。因此,第一个键/值对或根标签必须是教训,然后生病也会验证是否有单位标签,然后是标题标签,然后是至少一个其他类型的标签等......我可以做这很容易,如果我可以把所有东西都变成一个键/值集合。此外,还有很多标记名是相同的,所以键应该不是唯一的。但是,对于该值,它们应该是唯一的,但仅限于标签名称。所以单元只能有一个“4”,但另一个标签,可以说imageID也可以有“4”。这不是要求,而是“很高兴有”,如果不是简单的话,我可能会想出来。但如果它真的很难,那么我会一起跳过它。

我希望这是有道理的。

不,我不认为我允许使用json。我确信它可以在simpleXMl中完成,但如果它不可能,那么请提供一种方法在json中执行它(假设json包含在PHP中,而不是必须加载的扩展)。

这是大学的家庭作业,所以我不能使用扩展或其他任何需要超出XAMPP基本包(php,mysql,apache等)的东西。

回答

0

真的很惊讶我没有得到任何投票或意见或答案或任何事情。我最终确定了这一点。哦,是的...这也得到了风滚草徽章!

无论如何,答案其实很简单。我在PHP中使用了simplexml_load_file函数,它实际上支持任何类型的xml样式。因此,在运行此之后,

$eml = simplexml_load_file("unit.eml"); 

我然后做这样的事情

并用$标签和$ tagInfo通过我的EML遍历并获得我所需要的一切。