Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以使用DomDocument创建一个开始和结束标记不同的元素?_Php_Xml_Domdocument - Fatal编程技术网

Php 是否可以使用DomDocument创建一个开始和结束标记不同的元素?

Php 是否可以使用DomDocument创建一个开始和结束标记不同的元素?,php,xml,domdocument,Php,Xml,Domdocument,我知道这听起来很奇怪,但我有一个特殊的情况,我需要创建一个xml(实际上,由于不同的结束标记,这将不再是xml文档),其中根开始标记与根结束标记不同。比如: <OPENING_TAG> <ONE></ONE> <TWO></TWO> <THREE></THREE> </CLOSING_TAG> 我再次知道这是不对的,但正如我所提到的,这是一个特殊情况,其中开始和结束标记必须不同

我知道这听起来很奇怪,但我有一个特殊的情况,我需要创建一个xml(实际上,由于不同的结束标记,这将不再是xml文档),其中根开始标记与根结束标记不同。比如:

<OPENING_TAG>
   <ONE></ONE>
   <TWO></TWO>
   <THREE></THREE>
</CLOSING_TAG>


我再次知道这是不对的,但正如我所提到的,这是一个特殊情况,其中开始和结束标记必须不同。如何使用DomDocument实现这一点?

您似乎想做的是创建一个无效的XML文档。DOMDocument不允许您这样做-这毫无意义。所以答案是不,你不能


如果要在之后创建文档,请直接将其创建为文本。

您似乎要做的是创建一个无效的XML文档。DOMDocument不允许您这样做-这毫无意义。所以答案是不,你不能


如果要在之后创建文档,请直接将其创建为文本。

否,DOM不允许使用无效的XML文档。如果需要创建开始标记和结束标记,可以编写如下xml(如果符合您的要求):



或者您可以将其创建为简单字符串(文本)。

不,DOM不允许使用无效的XML文档。如果需要创建开始标记和结束标记,可以编写如下xml(如果符合您的要求):




或者您可以将其创建为一个简单的字符串(文本)。

我要补充的是,它甚至超过了“无效”,文档需要被视为格式良好(请参阅)。要求结尾标记与开头标记匹配。我知道它将无效。是的,在创建后编辑它(作为字符串)是我目前使用的方式。你是对的@krampstudio。我知道这一点,我告诉你这很奇怪。实际上它不再是xml了。是的,但这就是DomDocument无法加载字符串的原因。你可能有机会尝试使用
loadHtml
加载它,但它可能会忽略结束符tag@krampstudio是的,你就是对,这正是失败的原因。这可能是另一种解决方案。但只有一个标记需要更改。因此我认为最短的方法是在创建字符串后使用str_replace()。我要补充的是,它甚至超过了“无效”,文档需要被视为格式良好(请参阅)。要求结束标记与开始标记匹配,我知道这是无效的。是的,在创建后编辑它(作为字符串)是我目前使用的方式。你说得对@krampstudio。我知道这一点,我说这很奇怪。事实上,它不再是xml了。是的,但这就是DomDocument无法加载字符串的原因。您可能有机会尝试使用
loadHtml
加载它,但它可能会忽略关闭tag@krampstudio是的,你说得对,这正是失败的原因。这可能是另一个解决办法。但只有一个标签需要更改。因此,我认为最短的方法是在创建字符串后使用str_replace()。只是想问一下-为什么需要这样做,是否最好将使用结果的内容更改为处理格式正确的XML。@NigelRen当然最好(比)修复使用部分,但这不取决于我。这是一个旧的桌面软件,我必须使用。好吧,有时我与第三方合作,他们要求一些奇怪的东西,很难说服他们改变他们的软件。但有时,这是一个向他们指出系统对他们来说做某事是错误的案例。但如果这不是一个选择,那就太遗憾了。@NigelRen我已经问过很多次了。我告诉他们,没有办法让xml中的标记消失。但他们无法改变它。事实上,这是一个巨大的耻辱。DOM文档是一个节点树,其中每个元素节点都有一个名称。DOM节点中没有位置可以容纳两个单独的名称。你所描述的不是XML,所以如果你想这样做,你必须使用非XML工具。试问一下-你为什么需要这样做,是否最好将使用结果的内容更改为处理格式正确的XML。@NigelRen当然修复使用部分会更好,但这不取决于我。这是一个旧的桌面软件,我必须使用。好吧,有时我与第三方合作,他们要求一些奇怪的东西,很难说服他们改变他们的软件。但有时,这是一个向他们指出系统对他们来说做某事是错误的案例。但如果这不是一个选择,那就太遗憾了。@NigelRen我已经问过很多次了。我告诉他们,没有办法让xml中的标记消失。但他们无法改变它。事实上,这是一个巨大的耻辱。DOM文档是一个节点树,其中每个元素节点都有一个名称。DOM节点中没有位置可以容纳两个单独的名称。您所描述的不是XML,所以如果您想这样做,您必须使用非XML工具。
<MAIN_TAG>
   <OPENING_TAG></OPENING_TAG>
   <ONE></ONE>
   <TWO></TWO>
   <THREE></THREE>
   <CLOSING_TAG></CLOSING_TAG>
<MAIN_TAG>