php XML 读写 创建

本文介绍了使用PHP进行XML文件的读取与创建方法。详细展示了如何利用DOMDocument和SimpleXML解析XML文件,并通过实例演示了如何创建XML文档及其节点。此外还提供了HTTP输出和文件保存两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、XML 读

     1.1、 首先同目录定义好一个XML文件 :

    book.xml

<?xml version="1.0" encoding="utf-8"?>
<books>
  <book>
    <id>1</id>
    <name>书本001</name>
  </book>
    <book>
    <id>2</id>
    <name>书本002</name>
  </book>
    <book>
    <id>3</id>
        <name>书本003</name>
  </book>
    <title>这是标题</title>
</books>

1.2  通过 getElementsByTagName 读取XML

 

$xml=new DOMDocument();
$xml->load("book.xml");
// 通过 getElementsByTagName 读取
foreach($xml->getElementsByTagName('book') as $book)
{
    $id=$book->getElementsByTagName("id");
    $name=$book->getElementsByTagName("name");
    echo "id:".$id->item(0)->nodeValue.",name:".$name->item(0)->nodeValue."<br/>";
}

1.3 通过 simplexml_import_dom  直接读取属性

// 通过simplexml_import_dom  直接读取属性
$simplexml = simplexml_import_dom($xml);
echo "sid->title:".$simplexml->title;
echo  "the id is :".$simplexml->book[0]->id;
echo "the id is :".$simplexml->title;

 

二 、XML 创建

     2.1、通过 字符串 创建XML document 元素

    

$xmlString=<<<XML
<?xml version="1.0" encoding="utf-8"?>
<books>
  <book>
    <id>1</id>
    <name>书本001</name>
  </book>
    <book>
    <id>2</id>
    <name>书本002</name>
  </book>
    <book>
    <id>3</id>
        <name>书本003</name>
  </book>
    <title>这是标题</title>
</books>
XML;


$dom=new DomDocument;
$dom->loadXML($xmlString);

 

2.2 通过 DOMDocument  api  创建XML 对象 ( 子节点,节点属性 ,CDATA属性值标记)

class buildXml
{

    /*
     *  创建一个XML元素
     * */
    private function  createXml()
    {
        $dom = new DOMDocument("1.0");
        $books = $dom->createElement("books");

        for ($i = 0; $i < 4; $i++) {
            $book = $dom->createElement("book");

// 为book 节点添加一个属性
            $price = $dom->createAttribute("price");
            $priceValue = $dom->createTextNode($i * 10);
            $price->appendChild($priceValue);
            $book->appendChild($price);


// 添加一个id 接点元素 并赋值
            $id = $dom->createElement("id");
            $idValue = $dom->createTextNode($i);
            $id->appendChild($idValue);
            $book->appendChild($id);

//  添加一个待 CDATA标识的内容
            $title = $dom->createElement("title");
            $titleValue = $dom->createCDATASection("这是一个带CDATA标签的内容");
            $title->appendChild($titleValue);
            $book->appendChild($title);
            $books->appendChild($book);
        }

        $dom->appendChild($books);
        return $dom->saveXML();
    }


    // 输出XML
    public function  printXML()
    {
        header("Content-Type: text/xml");
        echo $this->createXml();
    }

    // 保存XML
    public function  saveXML()
    {
        $result = false;
        try {
            //打开要写入 XML数据的文件
            $fp = fopen("newxml.xml", "w");
            //写入 XML数据
            fwrite($fp, $this->createXml());
            //关闭文件
            fclose($fp);
            $result = true;
        } catch (Exception $e) {
            print $e->getMessage();
            exit();
        }
        return $result;
    }
}

 

2.3  http 输出 XML


require_once "buildXml.php";
$xml = new buildXml;
 echo $xml->printXML();

 

2.4 已文件形式保存 XML

require_once "buildXml.php";

$xml = new buildXml;
$xml->saveXML();

 

        

 

转载于:https://www.cnblogs.com/rhythmK/p/4658312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值