0

次の XML があり、配列のデータを入力する必要があります。問題は、「連絡先」という名前のノードが 3 つあるが、それぞれに異なる属性があることです。Xpathを使用してみましたが、エラーが発生し続けて機能させることができませんでした。おそらく構文エラーだと思います。

xmlのサンプル

<command>
<create>
<domain:create xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
domain-1.0.xsd">
<domain:name>0000</domain:name>
<domain:period unit="y">2</domain:period>
<domain:ns>
<domain:hostObj>0000</domain:hostObj>
</domain:ns>
<domain:registrant>0000</domain:registrant>
<domain:contact type="tech">000</domain:contact>
<domain:contact type="admin">000</domain:contact>
<domain:contact type="billing">000</domain:contact>
<domain:authInfo>
<domain:pw>000</domain:pw>
</domain:authInfo>
</domain:create>
</create>
<clTRID>ABC:ics-forth:1079691187887</clTRID>
</command>
</epp>

そして私のコードの下に

        $p2xml = new SimpleXmlElement($p2xmlf);
        foreach ($p2xml->command->create as $entry2)
        {
            $namespaces = $entry2->getNameSpaces(true);
            $dc = $entry2->children($namespaces['domain']);
            $dc->create->name = $domain_fields['name'];
            $dc->create->ns->hostObj = $domain_fields['ns1'];
            $dc->create->ns->hostObj = $domain_fields['ns2'];
            $dc->create->registrant = $domain_fields['registrant'];
            $dc->create->contact = $domain_fields['contact']; <-- problem here
            $dc->create->contact = $domain_fields['contact']; <-- problem here
            $dc->create->contact = $domain_fields['contact']; <-- problem here
            $dc->create->authInfo->pw = $domain_fields['pw']; 
            $oxml = $p2xml->asXML();

連絡先を //contact[@type=['tech'] などに置き換えようとしましたが、行き詰まりました

4

1 に答える 1

0

その PHP API が XPath を受け入れるかどうかはわかりませんが、受け入れる場合、3 つの要素のそれぞれを選択するために使用する XPath は次のようになります。

//contact[@type='tech']
//contact[@type='admin']
//contact[@type='billing']
于 2013-09-04T17:29:45.530 に答える