代码之家  ›  专栏  ›  技术社区  ›  Nikul Panchal

如何在PHP的父节点中添加XML

  •  2
  • Nikul Panchal  · 技术社区  · 6 年前

    我有2个XML字符串,来自下面的2个函数:

    1)$accessRequestXML=$accessRequestTXML->asXML();

    它生成此XML字符串:

    <?xml version="1.0"?>
    <AccessRequest>
        <AccessLicenseNumber>7D54A69331203795</AccessLicenseNumber>
        <UserId>peterfelts</UserId>
        <Password>abc123</Password>
    <AccessRequest>
    

    2) $raterequestxml=$raterequestxml->asxml();

    它生成此XML字符串:

    <?xml version="1.0"?>
    <RatingServiceSelectionRequest>
        <Request>
            <RequestAction>Rate</RequestAction>
            <RequestOption>Rate</RequestOption>
        </Request>
        <Shipment>
            <Shipper>
                <Name>Name</Name>
                <ShipperNumber></ShipperNumber>
                <Address>
                    <AddressLine1>Address Line</AddressLine1>
                    <City>Corado</City>
                    <PostalCode>00646</PostalCode>
                    <CountryCode>PR</CountryCode>
                </Address>
            </Shipper>
            <ShipTo>
                <CompanyName>Company Name</CompanyName>
                <Address>
                    <AddressLine1>Address Line</AddressLine1>
                    <City>Corado</City>
                    <PostalCode>00646</PostalCode>
                    <CountryCode>PR</CountryCode>
                </Address>
            </ShipTo>
            <ShipFrom>
                <CompanyName>Company Name</CompanyName>
                <Address>
                    <AddressLine1>Address Line</AddressLine1>
                    <City>Boca Raton</City>
                    <StateProvinceCode>FL</StateProvinceCode>
                    <PostalCode>33434</PostalCode>
                    <CountryCode>US</CountryCode>
                </Address>
            </ShipFrom>
            <Service>
                <Code>02</Code>
                <Description>2nd Day Air</Description>
            </Service>
            <Package>
                <PackagingType>
                    <Code>02</Code>
                    <Description>UPS Package</Description>
                </PackagingType>
                <PackageWeight>
                    <UnitOfMeasurement>
                        <Code>LBS</Code>
                    </UnitOfMeasurement>
                    <Weight>15.2</Weight>
                </PackageWeight>
            </Package>
        </Shipment>
    </RatingServiceSelectionRequest>
    

    我想补充 RatingServiceSelectionRequest 这个节点到 AccessRequest

    我想要这样的结果:

    <?xml version="1.0"?>
    <AccessRequest>
        <AccessLicenseNumber>7D54A69331203795</AccessLicenseNumber>
        <UserId>peterfelts</UserId>
        <Password>abc123</Password>
        <RatingServiceSelectionRequest>
            <Request>
                <RequestAction>Rate</RequestAction>
                <RequestOption>Rate</RequestOption>
            </Request>
            <Shipment>
                <Shipper>
                    <Name>Name</Name>
                    <ShipperNumber></ShipperNumber>
                    <Address>
                        <AddressLine1>Address Line</AddressLine1>
                        <City>Corado</City>
                        <PostalCode>00646</PostalCode>
                        <CountryCode>PR</CountryCode>
                    </Address>
                </Shipper>
                <ShipTo>
                    <CompanyName>Company Name</CompanyName>
                    <Address>
                        <AddressLine1>Address Line</AddressLine1>
                        <City>Corado</City>
                        <PostalCode>00646</PostalCode>
                        <CountryCode>PR</CountryCode>
                    </Address>
                </ShipTo>
                <ShipFrom>
                    <CompanyName>Company Name</CompanyName>
                    <Address>
                        <AddressLine1>Address Line</AddressLine1>
                        <City>Boca Raton</City>
                        <StateProvinceCode>FL</StateProvinceCode>
                        <PostalCode>33434</PostalCode>
                        <CountryCode>US</CountryCode>
                    </Address>
                </ShipFrom>
                <Service>
                    <Code>02</Code>
                    <Description>2nd Day Air</Description>
                </Service>
                <Package>
                    <PackagingType>
                        <Code>02</Code>
                        <Description>UPS Package</Description>
                    </PackagingType>
                    <PackageWeight>
                        <UnitOfMeasurement>
                            <Code>LBS</Code>
                        </UnitOfMeasurement>
                        <Weight>15.2</Weight>
                    </PackageWeight>
                </Package>
            </Shipment>
        </RatingServiceSelectionRequest>
    </AccessRequest>
    

    有人能帮我吗?我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Nigel Ren    6 年前

    imho-最好的方法是将XML导入到DOM中,这样可以更灵活地添加节点和移动节点。

    此代码将访问请求作为dom文档的开头加载,然后将第二个XML作为新节点导入,然后将其附加到现有XML的结尾…

    $dom = new DOMDocument();
    $dom->loadXML($accessRequestXML->asXML());
    $importrr = dom_import_simplexml($rateRequestXml);
    $domImportRR = $dom->importNode($importrr, true);
    $dom->documentElement->appendChild($domImportRR);
    echo $dom->saveXML();