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上的什么位置