我正在尝试使用 PHP 读取 XLSX 文件。确切地说,使用gneustaetter/XLSXReader。但是,这些 XLSX 文件是由不同的公司使用不同的软件生成的。所以我想检查他们是否有正确的编码并且总是找到 UTF-8。
因此,我的问题如上所述:XLSX 文件是否按定义编码为 UTF-8?或者是否存在可能破坏我正在处理的导入脚本的异常?
我有一个ELK堆栈.我需要有一个通知系统,它会查询弹性搜索特定查询并触发电子邮件通知,如果找到一个.可以有人建议任何这样的开源通知工具吗?
我正在尝试查询一些非常大的 XML 文件(最多几个演出),检查它们的格式是否正确,然后将它们写入硬盘。看起来很容易,但由于它们太大了,我无法在内存中保存整个文档。因此,我的问题是: 当可用 RAM 少于一个文档的大小时,如何读取、检查和写入大型 XML 文件?
我的方法:使用 XMLReader 逐个读取它(如果成功,文档必须格式良好)并使用 XMLWriter 进行写入。问题:XMLWriter 似乎将所有内容都存储在 RAM 中,直到文档完成。DOM Documents 和 SimpleXML 似乎做同样的事情。还有什么我可以尝试的吗?
我想使用 XMLReader 解析一个 XML 文档。我有一个带有所有常量的案例开关。但是,如果标签是自关闭的 XMLReader 只触发 ELEMENT,而不是像预期的那样触发 ELEMENT 和 END_ELEMENT。
通过类属性 $isEmptyElement 进行检测也不起作用,因为该标记具有属性。
因此我的问题是:如何在 PHP 中使用 XMLReader 检测自关闭的 XML 标记?
相关但没有解决方案: XmlReader - 自关闭元素不会触发 EndElement 事件?
示例节点:
<mynode name="somenamestring" code="intstring" option="intstring3"/>
Run Code Online (Sandbox Code Playgroud)
我的代码:
$xmlReader->open($url,NULL);
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'UTF-8');
$xmlWriter->setIndent(true);
$xmlWriter->setIndentString(' ');
while ($xmlReader->read()) {
switch ($xmlReader->nodeType) {
case 1: #element
$xmlWriter->startElement($xmlReader->name);
if ($xmlReader->hasAttributes) {
while ($xmlReader->moveToNextAttribute()) {
$xmlWriter->writeAttribute($xmlReader->name,$xmlReader->value);
}
}
if ($xmlReader->isEmptyElement) {
$xmlWriter->endElement();
}
break;
case 3: #text
$xmlWriter->text($xmlReader->value);
break;
case 4: #cdata
$xmlWriter->writeCData($xmlReader->value);
break; …Run Code Online (Sandbox Code Playgroud)