Php DomDocument-Don';你没有收尾标签吗?

Php DomDocument-Don';你没有收尾标签吗?,php,xml,domdocument,php-5.6,Php,Xml,Domdocument,Php 5.6,这是我第一次处理DomDocument和PHP。我几乎完成了,但不知为什么XML缺少一个结束标记。我在下面的XML中缺少“Sport”的结束标记 <?xml version="1.0" encoding="UTF-8"?> <Persons PageCount="1" PageIndex="1" ApplicationId="secret" xmlSchemaVersion="1.0" GenerationDate="2018-11-17T23:10:31" IsIncreme

这是我第一次处理DomDocument和PHP。我几乎完成了,但不知为什么XML缺少一个结束标记。我在下面的XML中缺少“Sport”的结束标记

<?xml version="1.0" encoding="UTF-8"?>
<Persons PageCount="1" PageIndex="1" ApplicationId="secret" xmlSchemaVersion="1.0" GenerationDate="2018-11-17T23:10:31" IsIncremental="true">
  <Person CreateDate="2008-08-29T08:39:44" LMDate="2012-08-29T08:39:44" OptionType="Update">
    <PersonId>82</PersonId>
    <PersonalNumber>19660903-xxxx</PersonalNumber>
    <FirstName>Joakim</FirstName>
    <LastName>Krassman</LastName>
    <BirthDate>1966-09-03</BirthDate>
    <Gender>male</Gender>
    <Organisations>
      <Organisation OptionType="Update">
        <OrgID>31215</OrgID>
        <OrganisationRF_NR>45264</OrganisationRF_NR>
        <OrganisationNumber>556717xxxx</OrganisationNumber>
        <Sports>
          <Sport OptionType="Update"/>
          <SportID>43</SportID>
          <IsActive LMDate="2012-08-29T08:39:44">true</IsActive>
        </Sports>
      </Organisation>
    </Organisations>
  </Person>
</Persons>

82
19660903 xxxx
乔金
克拉斯曼
1966-09-03
男性的
31215
45264
556717xxxx
43
真的
这是我的PHP代码:

<?php
$generate_date = date('Y-m-d\TH:i:s');

$doc = new DOMDocument('1.0', 'UTF-8'); 
$doc->formatOutput = true;

/* PERSONS */ 
$r = $doc->createElement( "Persons" );
$attr = $doc->createAttribute('PageCount');
$attrVal = $doc->createTextNode(1);
$attr->appendChild($attrVal);
$r->appendChild($attr);


$attr = $doc->createAttribute('PageIndex');
$attrVal = $doc->createTextNode(1);
$attr->appendChild($attrVal);
$r->appendChild($attr);

$attr = $doc->createAttribute('ApplicationId');
$attrVal = $doc->createTextNode("secret");
$attr->appendChild($attrVal);
$r->appendChild($attr);

$attr = $doc->createAttribute('xmlSchemaVersion');
$attrVal = $doc->createTextNode("1.0");
$attr->appendChild($attrVal);
$r->appendChild($attr);


$attr = $doc->createAttribute('GenerationDate');
$attrVal = $doc->createTextNode($generate_date);
$attr->appendChild($attrVal);
$r->appendChild($attr);

$attr = $doc->createAttribute('IsIncremental');
$attrVal = $doc->createTextNode('true');
$attr->appendChild($attrVal);
$r->appendChild($attr);


$doc->appendChild( $r );

/* PERSON */


$b = $doc->createElement( "Person" );
$attr = $doc->createAttribute('CreateDate');
$attrVal = $doc->createTextNode('2008-08-29T08:39:44');
$attr->appendChild($attrVal);
$b->appendChild($attr);

$attr = $doc->createAttribute('LMDate');
$attrVal = $doc->createTextNode('2012-08-29T08:39:44');
$attr->appendChild($attrVal);
$b->appendChild($attr);

$attr = $doc->createAttribute('OptionType');
$attrVal = $doc->createTextNode('Update');
$attr->appendChild($attrVal);
$b->appendChild($attr);


/* START PERSON SINGULAR */

$person = $doc->createElement( "PersonId" );
$person->appendChild(
$doc->createTextNode( 82 )
);
$b->appendChild( $person );

$person = $doc->createElement( "PersonalNumber" );
$person->appendChild(
$doc->createTextNode( '19660903-xxxx' )
);
$b->appendChild( $person );

$person = $doc->createElement( "FirstName" );
$person->appendChild(
$doc->createTextNode( 'Joakim' )
);
$b->appendChild( $person );

$person = $doc->createElement( "LastName" );
$person->appendChild(
$doc->createTextNode( 'Krassman' )
);
$b->appendChild( $person );

$person = $doc->createElement( "BirthDate" );
$person->appendChild(
$doc->createTextNode( '1966-09-03' )
);
$b->appendChild( $person );


$person = $doc->createElement( "Gender" );
$person->appendChild(
$doc->createTextNode( 'male' )
);
$b->appendChild( $person );

    /* SKJUT IN ORGINISATION */ 
     $org = $doc->createElement( "Organisations" );
     $b->appendChild($org);
     $subOrg = $doc->createElement( "Organisation" );


     $subOrg->setAttribute("OptionType", "Update");
     $org->appendChild( $subOrg );


     $orgDet = $doc->createElement( "OrgID" );
     $orgDet->appendChild(
     $doc->createTextNode( 31215 ));
     $subOrg->appendChild( $orgDet );

     $orgDet = $doc->createElement( "OrganisationRF_NR" );
     $orgDet->appendChild(
     $doc->createTextNode( 45264 ));
     $subOrg->appendChild( $orgDet );

     $orgDet = $doc->createElement( "OrganisationNumber" );
     $orgDet->appendChild(
     $doc->createTextNode( 556717xxxx ));
     $subOrg->appendChild( $orgDet );

     /* SPORTS */

     $sport = $doc->createElement( "Sports" );
     $subOrg->appendChild($sport);
     $subOrg = $doc->createElement( "Sport" );
     $subOrg->setAttribute("OptionType", "Update");
     $sport->appendChild( $subOrg );

     $sportDet = $doc->createElement( "SportID" );
     $sportDet->appendChild(
     $doc->createTextNode( 43 ));
     $sport->appendChild( $sportDet );

     $sportDet = $doc->createElement( "IsActive" );
     $sportDet->setAttribute("LMDate", "2012-08-29T08:39:44");

     $sportDet->appendChild(
     $doc->createTextNode( 'true' ));

     $sport->appendChild( $sportDet );


    /* SLUT ORGINISATION */


/* SLUT PERSON SINGULAR*/
$r->appendChild( $b );


echo ($doc->saveXML());
?>
createTextNode(“1.0”);
$attr->appendChild($attrVal);
$r->appendChild($attr);
$attr=$doc->createAttribute('GenerationDate');
$attrVal=$doc->createTextNode($generate_date);
$attr->appendChild($attrVal);
$r->appendChild($attr);
$attr=$doc->createAttribute('IsIncremental');
$attrVal=$doc->createTextNode('true');
$attr->appendChild($attrVal);
$r->appendChild($attr);
$doc->appendChild($r);
/*人*/
$b=$doc->createElement(“人”);
$attr=$doc->createAttribute('CreateDate');
$attrVal=$doc->createTextNode('2008-08-29T08:39:44');
$attr->appendChild($attrVal);
$b->appendChild($attr);
$attr=$doc->createAttribute('LMDate');
$attrVal=$doc->createTextNode('2012-08-29T08:39:44');
$attr->appendChild($attrVal);
$b->appendChild($attr);
$attr=$doc->createAttribute('OptionType');
$attrVal=$doc->createTextNode('Update');
$attr->appendChild($attrVal);
$b->appendChild($attr);
/*起始单数*/
$person=$doc->createElement(“PersonId”);
$person->appendChild(
$doc->createTextNode(82)
);
$b->儿童(人);
$person=$doc->createElement(“PersonalNumber”);
$person->appendChild(
$doc->createTextNode('19660903 xxxx')
);
$b->儿童(人);
$person=$doc->createElement(“FirstName”);
$person->appendChild(
$doc->createTextNode('Joakim')
);
$b->儿童(人);
$person=$doc->createElement(“LastName”);
$person->appendChild(
$doc->createTextNode('Krassman')
);
$b->儿童(人);
$person=$doc->createElement(“生日”);
$person->appendChild(
$doc->createTextNode('1966-09-03')
);
$b->儿童(人);
$person=$doc->createElement(“性别”);
$person->appendChild(
$doc->createTextNode('male')
);
$b->儿童(人);
/*组织中的SKJUT*/
$org=$doc->createElement(“组织”);
$b->appendChild($org);
$subOrg=$doc->createElement(“组织”);
$subOrg->setAttribute(“OptionType”、“Update”);
$org->appendChild($subOrg);
$orgDet=$doc->createElement(“OrgID”);
$orgDet->appendChild(
$doc->createTextNode(31215));
$subOrg->appendChild($orgDet);
$orgDet=$doc->createElement(“组织编号”);
$orgDet->appendChild(
$doc->createTextNode(45264));
$subOrg->appendChild($orgDet);
$orgDet=$doc->createElement(“组织编号”);
$orgDet->appendChild(
$doc->createTextNode(556717xxxx));
$subOrg->appendChild($orgDet);
/*运动*/
$sport=$doc->createElement(“运动”);
$subOrg->appendChild($sport);
$subOrg=$doc->createElement(“运动”);
$subOrg->setAttribute(“OptionType”、“Update”);
$sport->appendChild($subOrg);
$sportDet=$doc->createElement(“SportID”);
$sportDet->appendChild(
$doc->createTextNode(43));
$sport->appendChild($sportDet);
$sportDet=$doc->createElement(“IsActive”);
$sportDet->setAttribute(“LMDate”,“2012-08-29T08:39:44”);
$sportDet->appendChild(
$doc->createTextNode('true');
$sport->appendChild($sportDet);
/*荡妇组织*/
/*荡妇单数*/
$r->b$b;
echo($doc->saveXML());
?>

我确信我犯了一些根本性的错误,有人能引导我找到解决方案吗?

标签是一个空标签,因此在标签的末尾关闭(
/>
)-

这会给你

<Sport OptionType="Update"></Sport>
你需要把这两行改成

$sport->appendChild( $sportDet );
要将它们添加到
$subOrg
,请改为

$subOrg->appendChild( $sportDet );

好的,但我希望结束标记在“”标记之后。如果我应用你的解决方案,我会在开始标记之后直接得到结束标记。好的-这在问题中并不清楚,我已经在答案中添加了一些更新。谢谢Nigel,这就成功了。希望集成器使用JSON而不是XML;)这是很好的,知道如何与这两个工作,因为人们想要各种各样的这些天!如果这解决了问题,你能接受吗?谢谢。
  <Sport OptionType="Update">
    <SportID>43</SportID>
    <IsActive LMDate="2012-08-29T08:39:44">true</IsActive>
  </Sport>
 $subOrg = $doc->createElement( "Sport" );
 $subOrg->setAttribute("OptionType", "Update");
 $sport->appendChild( $subOrg );

 $sportDet = $doc->createElement( "SportID" );
 $sportDet->appendChild(
 $doc->createTextNode( 43 ));
 $sport->appendChild( $sportDet );

 $sportDet = $doc->createElement( "IsActive" );
 $sportDet->setAttribute("LMDate", "2012-08-29T08:39:44");

 $sportDet->appendChild(
 $doc->createTextNode( 'true' ));

 $sport->appendChild( $sportDet );
$sport->appendChild( $sportDet );
$subOrg->appendChild( $sportDet );