简体   繁体   English

使用PHP填写现有的xml文件

[英]Fill in an existing xml file using PHP

i have an existing XML file and i would like to change certain fields in it using PhP. 我有一个现有的XML文件,我想使用PhP更改其中的某些字段。 For example say i want to change id and pw. 例如说我想更改id和pw。 Any help on how to open and write on the certain fields? 对如何打开和写入某些字段有帮助吗?

        <info>
            <contact:info xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0
contact-1.0.xsd">
                <contact:id>reg_contact001</contact:id>
                <contact:authInfo>
                    <contact:pw>my-password</contact:pw>
                </contact:authInfo>
            </contact:info>
        </info> 
$xml = <<<XML
    <info>
        <contact:info xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
            <contact:id>reg_contact001</contact:id>
            <contact:authInfo>
                <contact:pw>my-password</contact:pw>
            </contact:authInfo>
        </contact:info>
    </info>
XML;

function changeXML ($xml, $params) {
    // prepare xml object
    $xmlObj = new SimpleXMLElement($xml);
    $namespaces = $xmlObj->getNameSpaces(true);
    $entry = $xmlObj->children($namespaces['contact']);

    // change data
    $entry->info->id = $params->id;
    $entry->info->authInfo->pw = $params->pw;

    return '<info>' . $entry->saveXML() . '</info>';
}

print_r($xml);

$params = new \stdClass();
$params->id = 1;
$params->pw = 'supercowpowers';

$result = changeXML($xml, $params);

print_r($result);

Output 产量

<info>
    <contact:info xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" xsi:schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
        <contact:id>reg_contact001</contact:id>
        <contact:authInfo>
            <contact:pw>my-password</contact:pw>
        </contact:authInfo>
    </contact:info>
</info>

<info>
    <contact:info xmlns:contact="urn:ietf:params:xml:ns:contact-1.0" schemaLocation="urn:ietf:params:xml:ns:contact-1.0 contact-1.0.xsd">
        <contact:id>1</contact:id>
        <contact:authInfo>
            <contact:pw>supercowpowers</contact:pw>
        </contact:authInfo>
    </contact:info>
</info>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM