如何在php文件里写xml

如何在php文件里写xml,第1张

php文件里写xml方法:

1、Xml代码

<?xml version="1.0" encoding="utf-8"?>

<article>

    <item>

        <title size="1">title1</title>

        <content>content1</content>

        <pubdate>2009-10-11</pubdate>

    </item>

    <item>

        <title size="1">title2</title>

        <content>content2</content>

        <pubdate>2009-11-11</pubdate>

    </item>

</article>

2、【直接生成字符串】 

使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。

<?PHP

$data_array = array(

    array(

    'title' => 'title1',

    'content' => 'content1',

        'pubdate' => '2009-10-11',

    ),

    array(

    'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2009-11-11',

    )

)

$title_size = 1

$xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"

$xml .= "<article>\n"

foreach ($data_array as $data) {

$xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate'])

}

$xml .= "</article>\n"

echo $xml

//  创建XML单项

function create_item($title_data, $title_size, $content_data, $pubdate_data)

{

    $item = "<item>\n"

    $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n"

    $item .= "<content>" . $content_data . "</content>\n"

    $item .= " <pubdate>" . $pubdate_data . "</pubdate>\n"

    $item .= "</item>\n"

    return $item

}

?>

3、:【DomDocument】 

使用DomDocument生成XML文件,创建节点使用createElement方法,创建文本内容使用createTextNode方法,添加子节点使用appendChild方法,创建属性使用createAttribute方法

<?php

$data_array = array(

    array(

    'title' => 'title1',

    'content' => 'content1',

        'pubdate' => '2009-10-11',

    ),

    array(

    'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2009-11-11',

    )

)

//  属性数组

$attribute_array = array(

    'title' => array(

    'size' => 1

    )

)

//  创建一个XML文档并设置XML版本和编码。。

$dom=new DomDocument('1.0', 'utf-8')

//  创建根节点

$article = $dom->createElement('article')

$dom->appendchild($article)

foreach ($data_array as $data) {

    $item = $dom->createElement('item')

    $article->appendchild($item)

    create_item($dom, $item, $data, $attribute_array)

}

echo $dom->saveXML()

function create_item($dom, $item, $data, $attribute) {

    if (is_array($data)) {

        foreach ($data as $key => $val) {

            //  创建元素

            $$key = $dom->createElement($key)

            $item->appendchild($$key)

            //  创建元素值

            $text = $dom->createTextNode($val)

            $$key->appendchild($text)

            if (isset($attribute[$key])) {

            //  如果此字段存在相关属性需要设置

                foreach ($attribute[$key] as $akey => $row) {

                    //  创建属性节点

                    $$akey = $dom->createAttribute($akey)

                    $$key->appendchild($$akey)

                    // 创建属性值节点

                    $aval = $dom->createTextNode($row)

                    $$akey->appendChild($aval)

                }

            }   //  end if

        }

    }   //  end if

}   //  end function

?>

4、:【XMLWriter】 

使用XMLWriter类创建XML文件,此方法在PHP 5.1.2后有效。

另外,它可以输出多种编码的XML,但是输入只能是utf-8

<?php

$data_array = array(

    array(

    'title' => 'title1',

    'content' => 'content1',

        'pubdate' => '2009-10-11',

    ),

    array(

    'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2009-11-11',

    )

)

//  属性数组

$attribute_array = array(

    'title' => array(

    'size' => 1

    )

)

$xml = new XMLWriter()

$xml->openUri("php://output")

//  输出方式,也可以设置为某个xml文件地址,直接输出成文件

$xml->setIndentString('  ')

$xml->setIndent(true)

$xml->startDocument('1.0', 'utf-8')

//  开始创建文件

//  根结点

$xml->startElement('article')

foreach ($data_array as $data) {

    $xml->startElement('item')

    if (is_array($data)) {

        foreach ($data as $key => $row) {

          $xml->startElement($key)

          if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))

          {

              foreach ($attribute_array[$key] as $akey => $aval) {

              //  设置属性值

                    $xml->writeAttribute($akey, $aval)

                }

            }

            $xml->text($row)   //  设置内容

            $xml->endElement() // $key

        }

    }

    $xml->endElement() //  item

}

$xml->endElement() //  article

$xml->endDocument()

$xml->flush()

?>

5、: 【SimpleXML】 

使用SimpleXML创建XML文档

<?php

$data_array = array(

    array(

    'title' => 'title1',

    'content' => 'content1',

        'pubdate' => '2009-10-11',

    ),

    array(

    'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2009-11-11',

    )

)

//  属性数组

$attribute_array = array(

    'title' => array(

    'size' => 1

    )

)

$string = <<<XML

<?xml version='1.0' encoding='utf-8'?>

<article>

</article>

XML

$xml = simplexml_load_string($string)

foreach ($data_array as $data) {

    $item = $xml->addChild('item')

    if (is_array($data)) {

        foreach ($data as $key => $row) {

          $node = $item->addChild($key, $row)

          if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))

            {

              foreach ($attribute_array[$key] as $akey => $aval) {

             //  设置属性值

                  $node->addAttribute($akey, $aval)

            }

          }

        }

    }

}

echo $xml->asXML()

?>

aaa.xml是你的

<?xml version="1.0" encoding="utf-8"?>

<root>

<php100 id="2">

<index>test test</index>

</php100>

<php100 id="3">

<index>new xml content</index>

</php100>

</root>

===================

<?php

if (file_exists('aaa.xml'))

{

$xml = simplexml_load_file('aaa.xml')

for($i=2$i<10$i++)

{

$xml->addChild('php100')

$xml->php100[$i]->addAttribute("id", $i+2)

$xml->php100[$i]->addChild('index',$i.'aaa')

}

echo $xml->asXML()

}

else

{

exit('Error.')

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11532038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存