我对发送的XML提要感到有些悲伤。我知道这是无效的,但是发送程序的开发周期如此之长,以至于不值得等待他们能够纠正错误。所以我正在寻找一种解决方法,某种方法可以让 PHP 让我读取 XML 并合并/删除无效的属性条目,同时保留所有其他属性条目。
错误是我在XML节点上有重复的属性。我一直在使用simpleXML来读取文件并将它们处理成有用的值,但是这一行只是彻底破坏了系统。有问题的 XML 如下所示
<dCategory dec="1102" dup="45" dup="4576" loc="274" mov="31493" prf="23469" unq="240031" xxx="7861" />
我真正想要的是 C# 的 PHP 等价物。MoveToNextAttribute() 在 XML 读取器上。我似乎找不到任何在出现重复属性时不会爆炸的东西。
有人帮忙吗?
答案链接到解决XML本身中的字符错误,例如&不显示为&。这里的问题是 XML 的结构被破坏了,而不是内容。该线程中的答案返回
parser error : Attribute attr1 redefined
当与 XML 一起显示时
<open-1 attr1="atr1" attr1="atr1">Text</open-1>
这就是我试图解析的内容。
您可以使用 tidy 来清理您的输入:
<?php
$buffer = '<?xml version="1.0" encoding="UTF-8"?><open-1 attr1="atr1" attr1="atr1">Text</open-1>';
$config = [
'indent' => true,
'output-xml' => true,
'input-xml' => true,
];
$tidy = tidy_parse_string($buffer, $config, 'UTF8');
$tidy->cleanRepair();
echo $tidy;
将输出:
<?xml version="1.0" encoding="utf-8"?>
<open-1 attr1="atr1">Text</open-1>