Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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 写入现有XML文档_Php_Xml_Simplexml - Fatal编程技术网

Php 写入现有XML文档

Php 写入现有XML文档,php,xml,simplexml,Php,Xml,Simplexml,可能重复: 我试图使用SimpleXML(如Matthew在中所说)写入现有的XML文件,但我的XML文件有更多项(这不是XML文件的实际结构,我只是将其用作示例) 开始iOS 4应用程序开发 因此,我的问题是,如何在PHP中使用SimpleXML向“WeiMengLee”项添加新的“Book”?正如vascowhite前面所述,重新考虑xml文件的结构。无论如何,这里有一些代码,它打开xml文件,循环浏览wei meng lee部分中所有可用的书籍并打印出它们的标题,然后向该部分添加一本

可能重复:

我试图使用SimpleXML(如Matthew在中所说)写入现有的XML文件,但我的XML文件有更多项(这不是XML文件的实际结构,我只是将其用作示例)


开始iOS 4应用程序开发

因此,我的问题是,如何在PHP中使用SimpleXML向“WeiMengLee”项添加新的“Book”?

正如vascowhite前面所述,重新考虑xml文件的结构。无论如何,这里有一些代码,它打开xml文件,循环浏览wei meng lee部分中所有可用的书籍并打印出它们的标题,然后向该部分添加一本新书,最后将文件保存回磁盘。确保用户可以编写xml文件,Web服务器在该文件下执行php脚本

//read info from xml file to structured object
$xml = new SimpleXMLElement('bla.xml', null, true);

//loop all available books for wei meng lee
foreach( $xml->Authors->WeiMengLee->Book as $book)
{
    //print book title + newline
    print $book . "<br />";
}

//add a new book entry to your xml object
$xml->Authors->WeiMengLee->addChild("Book", "HERE GOES THE TITLE");

//save the changes back to the xml file
//make sure to set proper file access rights 
//for bla.xml on the webserver
$xml->asXml('bla.xml');
//将信息从xml文件读取到结构化对象
$xml=newsimplexmlement('bla.xml',null,true);
//为李伟梦循环所有可用书籍
foreach($xml->Authors->WeiMengLee->Book as$Book)
{
//打印书名+换行符
打印$book。“
”; } //向xml对象添加新的图书条目 $xml->Authors->WeiMengLee->addChild(“书”,“标题在这里”); //将更改保存回xml文件 //确保设置正确的文件访问权限 //用于Web服务器上的bla.xml $xml->asXml('bla.xml');

希望这有助于8)

正如vascowhite前面所说的,重新考虑xml文件的结构。无论如何,这里有一些代码,它打开xml文件,循环浏览wei meng lee部分中所有可用的书籍并打印出它们的标题,然后向该部分添加一本新书,最后将文件保存回磁盘。确保用户可以编写xml文件,Web服务器在该文件下执行php脚本

//read info from xml file to structured object
$xml = new SimpleXMLElement('bla.xml', null, true);

//loop all available books for wei meng lee
foreach( $xml->Authors->WeiMengLee->Book as $book)
{
    //print book title + newline
    print $book . "<br />";
}

//add a new book entry to your xml object
$xml->Authors->WeiMengLee->addChild("Book", "HERE GOES THE TITLE");

//save the changes back to the xml file
//make sure to set proper file access rights 
//for bla.xml on the webserver
$xml->asXml('bla.xml');
//将信息从xml文件读取到结构化对象
$xml=newsimplexmlement('bla.xml',null,true);
//为李伟梦循环所有可用书籍
foreach($xml->Authors->WeiMengLee->Book as$Book)
{
//打印书名+换行符
打印$book。“
”; } //向xml对象添加新的图书条目 $xml->Authors->WeiMengLee->addChild(“书”,“标题在这里”); //将更改保存回xml文件 //确保设置正确的文件访问权限 //用于Web服务器上的bla.xml $xml->asXml('bla.xml');

希望这有助于8)

您需要确定xml是关于书籍还是关于作者

如果是关于书籍的,那么应该是这样的:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
</books>
$xml = new SimpleXMLElement("filename.xml", null, true);

$book = $xml->addChild('book');
$book->addChild('title', 'Another Book');
$book->addChild('Author', 'WeiMengLee');
$xml->asXML('filename.xml');
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
        </books>
    </author>
</authors>
$xml = new SimpleXMLElement("filename.xml", null, true);

foreach($xml as $author){
    if($author->name == 'WeiMengLee'){
        $weimenglee = $author;
    }
}

$weimenglee->books->addChild('book', 'Another book');

$xml->asXML('filename.xml');
输出:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
    <book>
        <title>Another Book</title>
        <Author>WeiMengLee</Author>
    </book>
</books>
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
            <book>Another book</bmook>
        </books>
    </author>
</authors>
输出:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
    <book>
        <title>Another Book</title>
        <Author>WeiMengLee</Author>
    </book>
</books>
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
            <book>Another book</bmook>
        </books>
    </author>
</authors>

魏蒙格勒
开始iOS 4应用程序开发
另一本书

您需要确定xml是关于书籍还是关于作者

如果是关于书籍的,那么应该是这样的:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
</books>
$xml = new SimpleXMLElement("filename.xml", null, true);

$book = $xml->addChild('book');
$book->addChild('title', 'Another Book');
$book->addChild('Author', 'WeiMengLee');
$xml->asXML('filename.xml');
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
        </books>
    </author>
</authors>
$xml = new SimpleXMLElement("filename.xml", null, true);

foreach($xml as $author){
    if($author->name == 'WeiMengLee'){
        $weimenglee = $author;
    }
}

$weimenglee->books->addChild('book', 'Another book');

$xml->asXML('filename.xml');
输出:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
    <book>
        <title>Another Book</title>
        <Author>WeiMengLee</Author>
    </book>
</books>
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
            <book>Another book</bmook>
        </books>
    </author>
</authors>
输出:-

<?xml version="1.0"?>
<books>
    <book>
        <title>Beginning iOS 4 Application Development</title>
        <author>WeiMengLee</author>
    </book>
    <book>
        <title>Another Book</title>
        <Author>WeiMengLee</Author>
    </book>
</books>
<?xml version="1.0"?>
<authors>
    <author>
        <name>WeiMengLee</name>
        <books>
            <book>Beginning iOS 4 Application Development</book>
            <book>Another book</bmook>
        </books>
    </author>
</authors>

魏蒙格勒
开始iOS 4应用程序开发
另一本书


这完全相同,只需将子元素添加到不同的元素中即可。还可以看到,您需要重新思考xml结构。是关于书还是关于作者?您现在似乎有点糊涂了。@vascowhite这不是我的XML文件的实际外观,我是以它为例的。它的工作原理完全相同,您只需将子元素添加到另一个元素中即可。还可以看到,您需要重新思考xml结构。是关于书还是关于作者?您现在似乎有点糊涂了。@vascowhite这不是我的XML文件的实际外观,我只是用它作为例子。谢谢!这正是我需要的!我只想问一个问题,我的xml文件需要放在我的服务器上的什么位置?不管它放在哪里,只要您从调用它的脚本中为它提供正确的相对路径,如:“../../my xml files/books/book collection.xml”@rodrigo silveira Ok。谢谢你的帮助@rodrigo silveira我一直在尝试使用$xml->asXML('bla.xml')将编辑保存到xml文件中;而且它不会编辑文件。我已经更改了文件的权限,以便每个人都可以读写。有没有什么理由这不起作用?除了用于执行php脚本的Web服务器用户(即www数据)的文件访问权限之外,我想不出任何其他原因。检查日志文件中是否有错误消息。上面说什么?放置xml文件:假设您有一个名为index.php的文件,其中包含上述代码。然后将bla.xml文件放在同一目录中。仔细检查文件是否可写。如果您具有Web服务器的shell访问权限,请使用
chmod 777 bla.xml
。如果您仅与ftp客户端连接,请右键单击该文件并查找文件访问设置。谢谢!这正是我需要的!我只想问一个问题,我的xml文件需要放在我的服务器上的什么位置?不管它放在哪里,只要您从调用它的脚本中为它提供正确的相对路径,如:“../../my xml files/books/book collection.xml”@rodrigo silveira Ok。谢谢你的帮助@rodrigo silveira我一直在尝试使用$xml->asXML('bla.xml')将编辑保存到xml文件中;而且它不会编辑文件。我已经更改了文件的权限,以便每个人都可以读写。有没有什么理由这不起作用?除了用于执行php脚本的Web服务器用户(即www数据)的文件访问权限之外,我想不出任何其他原因。检查日志文件中是否有错误消息。上面说什么?放置xml文件:假设您有一个名为index.php的文件,其中包含上述代码。然后将bla.xml文件放在同一目录中。仔细检查文件是否可写。如果您具有Web服务器的shell访问权限,请使用
chmod 777 bla.xml
。如果您仅与ftp客户端连接,请右键单击该文件并查找文件访问设置。感谢您的帮助!不过,我还有一个问题,“filename.xml”文件需要放在我的se上的什么位置