gpt4 book ai didi

php - 将节点导入到 DOMDocument 现有命名空间

转载 作者:行者123 更新时间:2023-12-04 05:44:33 27 4
gpt4 key购买 nike

我正在尝试使用 php 动态创建 xml 模式,但我在命名空间方面遇到了问题。我想要做的是让函数返回 xsd:elements 并将它们添加到 xsd:sequence 节点。

我在函数的临时 DOMDocument 中创建 xsd:element 节点,我需要指定 xsd 命名空间“xmlns:xsd="http://www.w3.org/2001/XMLSchema”,否则 'xsd:' 位是删除。然后我从临时文档中提取所需的节点并使用 importNode() 复制到存在的 DOMDocument。问题是完整的 xmlns 字符串附加到从创建元素的函数返回的每个节点。

初始 DOMDocument

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="UserType">
<xsd:sequence>
// add elements here
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

我用来收集字段的临时 DOMDocument
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element type="xsd:string" name="Field1"/>
<xsd:element type="xsd:string" name="Field2"/>
<xsd:element type="xsd:string" name="Field3"/>
</xsd:schema>

我得到的
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
<xsd:complexType name="UserType"/>
<xsd:sequence/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field1"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field2"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string" name="Field3"/>
</xsd:sequence/>
</xsd:complexType/>
</xsd:schema/>

如何导入现有的命名空间?

最佳答案

我需要做的是确保我创建了 _ALL_ 第一个 DOMDocument 中的元素使用:

createElementNS('http://www.w3.org/2001/XMLSchema','xsd:sequence')

而不是:
createElement('xsd:sequence')

我只是在需要 xmlns 声明的第一个元素上使用 createElementNS。

关于php - 将节点导入到 DOMDocument 现有命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com