要在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"?>
,但我更希望自动完成此操作,因为这将是一个经常发生的问题。
如何通过重新声明<?xml version="1.0" encoding="UTF-8"?>
来删除代码行或忽略代码行?
我尝试手动删除每个实例并使用replacestring()函数。 1.手动拆卸非常耗时。 2. replacestr()引发错误,因为XML文件中有许多“”会停止翻译。
我希望过滤该XML文件,并使用mysqli连接将每个/某些标签的值存储在mysql中。在将数据插入匹配的mysql行之前,我还想将标记内的某些值转换为布尔值整数“ true”和“ false”。
答案 0 :(得分:1)
您很可能在一个文件中包含一系列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;
}