Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP将新节点保存到从FTP服务器加载的XML中_Php_Xml_Ftp - Fatal编程技术网

如何使用PHP将新节点保存到从FTP服务器加载的XML中

如何使用PHP将新节点保存到从FTP服务器加载的XML中,php,xml,ftp,Php,Xml,Ftp,我从FTP服务器加载myfile.xml(参见下面的PHP)。现在我想添加一个新节点,并将这个新节点保存在FTP服务器加载的xml(myfile.xml)文件中 myfile.xml: <?xml version="1.0" encoding="utf-8" ?> <News> <NewsModel> <ID>1</ID> <Headline>m

我从FTP服务器加载myfile.xml(参见下面的PHP)。现在我想添加一个新节点,并将这个新节点保存在FTP服务器加载的xml(myfile.xml)文件中

myfile.xml:

<?xml version="1.0" encoding="utf-8" ?>
<News>
    <NewsModel>
        <ID>1</ID>
        <Headline>my First</Headline>
        <ShortDescription></ShortDescription>
        <Description></Description>
        <LinkText></LinkText>
        <Link></Link>
    </NewsModel>
    <NewsModel>
        <ID>2</ID>
        <Headline>my second</Headline>
        <ShortDescription></ShortDescription>
        <Description></Description>
        <LinkText></LinkText>
        <Link></Link>
    </NewsModel>
</News>

1.
我的第一次
2.
我的第二个
我的PHP代码:

<?php
    session_start();
    $msg = '';
    if (isset($_POST['btnSpeichern']) && !empty($_POST['inputHeadline']) && !empty($_POST['inputShorDesc']) && !empty($_POST['inputDesc'])) {
    
        $ftp_server = "myhost";
        $ftp_username = "myuser";
        $ftp_pass = "mypassword";
        $server_file = "myfile.xml";
        $xmlurl = "ftp://$ftp_username:$ftp_pass%21@$ftp_server/$server_file";
    
        $xml=simplexml_load_file($xmlurl)or die("Kann keine Verbindung zu $xmlurl aufbauen");
        
        $entry = $xml->addChild('NewsModel');
        $entry->addChild('ID',$_POST['inputIDNumber']);
        $entry->addChild('Headline',$_POST['inputHeadline']);
        $entry->addChild('ShortDescription',$_POST['inputShorDesc']);
        $entry->addChild('Description',$_POST['inputDesc']);
        $entry->addChild('LinkText',$_POST['inputLinkText']);
        $entry->addChild('Link',$_POST['inputLink']);
        
        $xml->addChild($entry);
    
        $xml->asXML($server_file);  
    }
?>
addChild('NewsModel');
$entry->addChild('ID',$\u POST['inputIDNumber']);
$entry->addChild('Headline',$_POST['inputhheadline']);
$entry->addChild('ShortDescription',$_POST['inputShorDesc']);
$entry->addChild('Description',$_POST['inputDesc']);
$entry->addChild('LinkText',$_POST['inputLinkText']);
$entry->addChild('Link',$_POST['inputLink']);
$xml->addChild($entry);
$xml->asXML($server\u文件);
}
?>
文件从FTP服务器正确加载(我看到两个节点)。我可以将新节点添加到现有节点,但该文件将另存为新文件。在新文件中,所有三个节点都可见

我想要的是,从FTP服务器加载文件,添加一个新节点并将其保存到加载的文件中,而不是保存到新文件中

如果不可能,如何将新创建的文件移动到FTP服务器并删除现有文件


谢谢

如果要将文件保存到FTP服务器,请在
asXML
中使用完整URL(
$xmlurl
):

$xml->asXML($xmlurl);
我不明白为什么这对你不起作用


或者,您可以将XML保存为字符串并使用本机PHP FTP功能,如使用
文件内容

$context = stream_context_create(['ftp' => ['overwrite' => true]];
$s = $xml->asXML()
file_put_contents($xmlurl, $s, 0, $context);