Nod 添加到 xml 作为 child,想要兄弟(SimpleXMLElement)
Nod added into xml as child, wanted sibling (SimpleXMLElement)
我想将 Data2 添加为请求的 child,但它却被添加为数据的 child。
class xml{
public function __construct(){
$this->request_xml = new SimpleXMLElement("<Request></Request>");
$this->request_xml->addAttribute('RequestType', "1");
$this->request_xml->addChild("Data");
$this->request_xml->addChild("Data2");
var_dump($this->request_xml->asXml());
}
}
$object = new xml();
结果是:
<request>
<data>
<data2></data2>
</data>
</request>
我要
<request>
<data></data>
<data2></data2>
</request>
我错过了什么?
谢谢!
XML 输出为:
<?xml version="1.0"?>
<Request RequestType="1"><Data/><Data2/></Request>
换句话说,Data
和 Data2
元素是兄弟元素,但是是短的空标签。如果浏览器将其加载为 HTML,它将尝试修复丢失的结束标记。如果将其解析为 XML,则不会发生这种情况。确保发送正确的内容类型 header:
header('Content-type: application/xml; charset=utf-8');
如果将 SimpleXMLElements 导入 DOM(或者最好首先使用 DOM 生成文档),您将获得更多用于保存 XML.
$element = dom_import_simplexml($request_xml);
echo $element->ownerDocument->saveXml(NULL, LIBXML_NOEMPTYTAG);
输出:
<?xml version="1.0"?>
<Request RequestType="1"><Data></Data><Data2></Data2></Request>
我想将 Data2 添加为请求的 child,但它却被添加为数据的 child。
class xml{
public function __construct(){
$this->request_xml = new SimpleXMLElement("<Request></Request>");
$this->request_xml->addAttribute('RequestType', "1");
$this->request_xml->addChild("Data");
$this->request_xml->addChild("Data2");
var_dump($this->request_xml->asXml());
}
}
$object = new xml();
结果是:
<request>
<data>
<data2></data2>
</data>
</request>
我要
<request>
<data></data>
<data2></data2>
</request>
我错过了什么?
谢谢!
XML 输出为:
<?xml version="1.0"?>
<Request RequestType="1"><Data/><Data2/></Request>
换句话说,Data
和 Data2
元素是兄弟元素,但是是短的空标签。如果浏览器将其加载为 HTML,它将尝试修复丢失的结束标记。如果将其解析为 XML,则不会发生这种情况。确保发送正确的内容类型 header:
header('Content-type: application/xml; charset=utf-8');
如果将 SimpleXMLElements 导入 DOM(或者最好首先使用 DOM 生成文档),您将获得更多用于保存 XML.
$element = dom_import_simplexml($request_xml);
echo $element->ownerDocument->saveXml(NULL, LIBXML_NOEMPTYTAG);
输出:
<?xml version="1.0"?>
<Request RequestType="1"><Data></Data><Data2></Data2></Request>