gpt4 book ai didi

php - 使用 php 从 xml 中删除元素 - 非正统的 xml

转载 作者:行者123 更新时间:2023-11-29 04:42:47 25 4
gpt4 key购买 nike

我创建了一个解析 xml 文档的 ios 应用程序。如果用户登录,他们的信息将被添加到 xml 文件中。我希望能够在用户注销或取消登录时删除用户。本质上,我需要弄清楚如何删除如下所示的 xml 对象(在本例中为调酒师):

<Bars>
<Bar>
<bar_id>0</bar_id>
<Bartenders>
<Bartender>
<imageURL>unique URL</imageURL>
<shift>20:30</shift>
</Bartender>
</Bartenders>
</Bar>
<Bar>
<bar_id>1</bar_id>
<Bartenders>
<Bartender>
<imageURL>aURL</imageURL>
<shift>a shift</shift>
</Bartender>
<Bartender>
<imageURL>aURL</imageURL>
<shift>a shift</shift>
</Bartender>
</Bartenders>
</Bar>

例如,我想根据唯一的 imageURL 删除用户...我还会知道 bar_id。这是我到目前为止所拥有的 php,但我完全愿意接受以不同方式执行此操作的建议

    $newimageURL = $row['imageURL'];
$newBar_ID = $row['Bar_ID'];

$xmlUrl = "Bars.xml"; // XML
$xmlStr = file_get_contents($xmlUrl);
$xml = new SimpleXMLElement($xmlStr);
$bartenders = $xml->xpath('//Bartenders');

// something needs to happen here to remove the child

$xml->asXML('Bars.xml');

有人告诉我我可以使用这种东西:

$bartenders->removeChild($bartenders[$newBar_ID]);

或 xpath,但我不确定如何仅使用唯一的 imageXML 获得正确的调酒师的路径。我知道我应该更好地计划/设计这个,但我时间紧迫,这将是必须要做的。

抱歉,我对 php 的了解太差了...感谢您的帮助。

最佳答案

http://php.net/manual/fr/ref.simplexml.php 有一个非常好的脚本效果很好

function removeNode($xml, $path, $multi='one')
{
$result = $xml->xpath($path);

# for wrong $path
if (!isset($result[0])) return false;

switch ($multi) {
case 'all':
$errlevel = error_reporting(E_ALL & ~E_WARNING);
foreach ($result as $r) unset ($r[0]);
error_reporting($errlevel);
return true;

case 'child':
unset($result[0][0]);
return true;

case 'one':
if (count($result[0]->children())==0 && count($result)==1) {
unset($result[0][0]);
return true;
}

default:
return false;
}

}

请点击链接了解更多信息

关于php - 使用 php 从 xml 中删除元素 - 非正统的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10116405/

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