使用这段XML:
<my_xml>
<entities>
<image url="lalala.com/img.jpg" id="img1" />
<image url="trololo.com/img.jpg" id="img2" />
</entities>
</my_xml>
Run Code Online (Sandbox Code Playgroud)
我必须摆脱图像标签内的所有属性.所以,我做到了这一点:
<?php
$article = <<<XML
<my_xml>
<entities>
<image url="lalala.com/img.jpg" id="img1" />
<image url="trololo.com/img.jpg" id="img2" />
</entities>
</my_xml>
XML;
$doc = new DOMDocument();
$doc->loadXML($article);
$dom_article = $doc->documentElement;
$entities = $dom_article->getElementsByTagName("entities");
foreach($entities->item(0)->childNodes as $child){ // get the image tags
foreach($child->attributes as $att){ // get the attributes
$child->removeAttributeNode($att); //remove the attribute
}
}
?>
Run Code Online (Sandbox Code Playgroud)
不知何故,当我尝试删除foreach块中的from属性时,它看起来像内部指针丢失,并且它不会删除这两个属性.
还有另一种方法吗?
提前致谢.
将内foreach循环更改为:
while ($child->hasAttributes())
$child->removeAttributeNode($child->attributes->item(0));
Run Code Online (Sandbox Code Playgroud)
或者回到前面删除:
if ($child->hasAttributes()) {
for ($i = $child->attributes->length - 1; $i >= 0; --$i)
$child->removeAttributeNode($child->attributes->item($i));
}
Run Code Online (Sandbox Code Playgroud)
或制作属性列表的副本:
if ($child->hasAttributes()) {
foreach (iterator_to_array($child->attributes) as $attr)
$child->removeAttributeNode($attr);
}
Run Code Online (Sandbox Code Playgroud)
任何这些都可行.
| 归档时间: |
|
| 查看次数: |
7757 次 |
| 最近记录: |