1

そのような出力を得ようとしています

<DeclarationFile>
<Declaration Id="DEC">
<DokPVNv4>
<ParskMen>5</ParskMen>
<ParskCeturksnis xsi:nil="true"/>

作れない<ParskCeturksnis xsi:nil="true"/>

使用する場合

$ParskCeturksnis = new SimpleXMLElement("<ParskCeturksnis></ParskCeturksnis>");
$ParskCeturksnis->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance"); 
echo $ParskCeturksnis->asXml();

すべての作品

しかし、コード全体が

$DOM = new DOMDocument('1.0','UTF-8');

$DeclarationFile = $DOM->createElement('DeclarationFile');
$DOM->appendChild($DeclarationFile);

$Declaration = $DOM->createElement('Declaration');
$DeclarationFile->appendChild($Declaration);
$Declaration_att = $DOM->createAttribute('Id');
$Declaration->appendChild($Declaration_att);
$att_Declaration_text = $DOM->createTextNode('DEC');
$Declaration_att->appendChild($att_Declaration_text);

$DokPVNv4 = $DOM->createElement('DokPVNv4');
$Declaration->appendChild($DokPVNv4);

$ParskMen = '5';
$ParskMen = $DOM->createElement('ParskMen',mb_convert_encoding($ParskMen, "UTF-8") );
$DokPVNv4->appendChild($ParskMen);

$ParskCeturksnis = new SimpleXMLElement("<ParskCeturksnis></ParskCeturksnis>");
$ParskCeturksnis->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance"); 
echo $ParskCeturksnis->asXml();

echo $DOM->saveXML(); 

エラーを取得するXML Parsing Error: junk after document element

Googleで検索しましたが、解決策が見つかりませんでした....

試した

 $ParskCeturksnis = $DOM->createElement('ParskCeturksnis');
 $DokPVNv4->appendChild($ParskCeturksnis)->addAttribute("xsi:nil", "true", "http://www.w3.org/2001/XMLSchema-instance");

得るXML Parsing Error: no element found

4

1 に答える 1

2

SimpleXML と DOM の拡張機能を混同しているようです。dom_import_simplexml()どちらも同じパーサーの上に実装されており、 と を使用して簡単に切り替えることがsimplexml_import_dom()できますが、一方が作成したオブジェクトで一方が機能するメソッドを単純に呼び出すことができるわけではありません。

あなたの場合、主に DOM を使用しているため、適切な DOM 関数、具体的には および を使用して属性を追加する必要があり->createAttributeNS()ます->appendChild()

必要なコードは次のとおりだと思います。

$ParskCeturksnis = $DOM->createElement('ParskCeturksnis');
$ParskCeturksnis->appendChild($DOM->createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil"));
$DokPVNv4->appendChild($ParskCeturksnis);
于 2013-08-02T23:23:31.053 に答える