gpt4 book ai didi

php - 解析多行声明版本和编码的 XML 文档时出现 SimpleXML 错误

转载 作者:行者123 更新时间:2023-11-29 05:50:37 25 4
gpt4 key购买 nike

要在 PHPs 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”值转换为 bool 整数。

最佳答案

您很可能在一个文件中有一系列 XML 文档,因此尝试仅删除 xml header 会给您留下无效的 XML 文档(因为它将有多个根元素 - 每个文档一个)。

您可以按 header 拆分内容(使用 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;
}

关于php - 解析多行声明版本和编码的 XML 文档时出现 SimpleXML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54714327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com