要在PHP中解析的文档simpleXML有多个条目:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
整个文件。该文件本质上是10-15个相同迭代标记的集合,其中包含不同的值。我发现解决此标记重复的一个解决方案是通过并手动删除<?xml version="1.0" encoding="UTF-8"?>
in所有其他事件,但我更喜欢自动完成它,因为这将是一个重复出现的问题。
如何通过重新声明<?xml version="1.0" encoding="UTF-8"?>
来删除代码行或忽略代码行?
我尝试手动删除每个实例并使用replacestring()函数。 1.手动拆卸非常耗时。 2. replacestr()抛出一个错误,因为XML文件中有许多停止转换的“”。
我希望过滤掉这个XML文件,并使用mysqli连接将每个/某些标签的值存储在mysql中。标签中的一些值我还希望在将数据插入匹配的mysql行之前将“true”和“false”值转换为布尔整数。
您很可能在一个文件中有一系列XML文档,因此尝试删除xml标头会留下无效的XML文档(因为它将有几个根元素 - 每个文档一个)。
您可以通过标题(使用explode()
)拆分内容 - 并将每个过程作为单独的XML文档...
$data = file_get_contents($fileName);
$docs = explode('<?xml version="1.0" encoding="UTF-8"?>', $data);
// Remove first document as it will be empty
array_shift($docs);
foreach ( $docs as $doc ) {
$xml = simplexml_load_string('<?xml version="1.0" encoding="UTF-8"?>'.$doc);
// Process XML file
echo $xml->getName().PHP_EOL;
}