SimpleXMLElement: удалить префикс ns1 при добавлении дочернего элемента - PullRequest
0 голосов
/ 09 января 2020

У меня есть вопрос относительно addChild в SimpleXMLElement. я пытаюсь создать файл xml, используя SimpleXMLElement с указанным заголовком c в качестве требования и структуры, подобной этой:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<ns1:Order xmlns:ns1=\"rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd\"><node id=\"1\" name=\"node 1\"><subnode id=\"1.1\" name=\"subnode 1.1\"/><subnode id=\"1.2\" name=\"subnode 1.2\"><inner_node id=\"1.2.1\" name=\"inner node 1.2.1\"/></subnode></node></ns1:Order>

это мой код:

    $xml_header = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <ns1:Order xmlns:ns1="rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd"></ns1:Order>';
    $xml = new SimpleXMLElement($xml_header);

    $node1 = $xml->addChild('node');
    $node1->addAttribute('id', '1');
    $node1->addAttribute('name', 'node 1');

    $subnode1 = $node1->addChild('subnode');
    $subnode1->addAttribute('id', '1.1');
    $subnode1->addAttribute('name', 'subnode 1.1');

    $subnode2 = $node1->addchild('subnode');
    $subnode2->addAttribute('id', '1.2');
    $subnode2->addAttribute('name', 'subnode 1.2');

    $inner_node1 = $subnode2->addChild('inner_node');
    $inner_node1->addAttribute('id', '1.2.1');
    $inner_node1->addAttribute('name', 'inner node 1.2.1');

    $this->response = $xml->asXML();

вывод:

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<ns1:Order xmlns:ns1=\"rrn:org.xcbl:schemas/xcbl/v3_5/xcbl35.xsd\"><ns1:node id=\"1\" name=\"node 1\"><ns1:subnode id=\"1.1\" name=\"subnode 1.1\"/><ns1:subnode id=\"1.2\" name=\"subnode 1.2\"><ns1:inner_node id=\"1.2.1\" name=\"inner node 1.2.1\"/></ns1:subnode></ns1:node></ns1:Order>

Кто-нибудь знает, как добавить дочерний элемент без префикса ns1 внутри тега ns1: Order?

...