我想出了一些功能,但我不相信它们是最好的方法。这是我为建立我所说的标题而制作的一个,因为我对 .csv 文件做同样的事情,并且 $headers 数组用于创建数据库表,标题是列名。我想对 .xml 文件做同样的事情......
function ecsvi_XML_establish_headers($xmlpath){
if( ! $xml3 = simplexml_load_file( $xmlpath ) ) {
return false;
} else {
$headers = array();
foreach( $xml3->book[0]->attributes() as $a => $b ) {
$headers[] = $a;
}
foreach( $xml3 as $header => $book ) {
foreach($book as $node => $value){
$headers[] = $node;
}
break;
}
return $headers;
}
我正在使用包含书籍的 .xml 文件进行测试,因此您可以看到该函数包含单词“book”。这不合适,因为它需要与任何 .xml 文件一起使用。
出于显而易见的原因(如果您认为我们正在使用任何 .xml 文件),一个用于计算我称之为“项目”的函数目前将返回零...
function ecsvi_XML_count_number_of_items($xmlpath){
$table = new SimpleXMLElement(file_get_contents($xmlpath));
return count($table->Row);
}
这不合适,因为它使用“Row”,而且我的 .xml 文件中没有名为“Row”的元素。
所以我发现自己想知道是否应该使用 eval() 之类的函数来执行相同的代码行,或者是否应该考虑更多 SimpleXML 方法或其他 PHP 函数?
我见过输出 .xml 文件内容的接口,然后用户选择属性和节点等来告诉应用程序要做什么。如果可能的话,我想避免这种情况。目标是将任何 .xml 导入到基于该文件创建的数据库表中。脚本不会知道内容、元素、节点、子节点等。
这是我的书 .xml 文件...
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
$headers 输出具有以下内容的数组...
*id
*author
*title
*genre
*price
*publish_date
*description
我需要这个标题列表来为这个 .xml 文件创建一个数据库表。每个导入的 .xml 文件都将完全不同,因此没有函数可以使用该列表或“目录”或“书籍”中的任何项目。也许我已经说得很清楚了。
感谢您提供有关最佳方法和现有资源的任何建议,这些建议可以帮助我确定合适的方法。