如何使用php基于模式创建xml文档?
我想根据用户提供的数据创建一个xml文件 我可以使用simplexml或DOMDocument创建xml文件,甚至DOMDocument中也有一个选项可以使用模式验证xml文档 但我需要的不是使用xml类创建节点和添加值,而是使用存储在其他地方的与架构相关的数据创建xml文件吗? 我认为在.net中有一个从数据集读取数据写入xml的选项。。但是我在PHP中找不到这样的东西 这可能吗?有没有这方面的课程 如果没有预定义的类,至少有任何方法的帮助吗 编辑: 我编辑这个问题是因为你们中的一些人似乎不清楚我的要求 例如,如果模式是如何使用php基于模式创建xml文档?,php,xml,xsd,Php,Xml,Xsd,我想根据用户提供的数据创建一个xml文件 我可以使用simplexml或DOMDocument创建xml文件,甚至DOMDocument中也有一个选项可以使用模式验证xml文档 但我需要的不是使用xml类创建节点和添加值,而是使用存储在其他地方的与架构相关的数据创建xml文件吗? 我认为在.net中有一个从数据集读取数据写入xml的选项。。但是我在PHP中找不到这样的东西 这可能吗?有没有这方面的课程 如果没有预定义的类,至少有任何方法的帮助吗 编辑: 我编辑这个问题是因为你们中的一些人似乎不清
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified">
<xs:element name="formpatterns">
<xs:element name="pan" type="pantype"/>
<xs:element name="name" type="nametype"/>
<xs:element name="fatherName" type="nametype"/>
<xs:group ref="address"/>
<xs:element name="dob" type="xs:date"/>
</xs:schema>
若用户提供了pan、姓名、父亲姓名、地址和出生日期的数据,那个么
我需要通过匹配模式和数据自动创建xml文档
模式可能会不时更改,因此我不想编辑所有代码来创建/更改节点和属性。我只需要指出新的模式,这样代码就可以在此基础上创建xml。如果您想使用PHP的DOM函数创建xml文件,我认为应该对您有所帮助。您的问题没有简单的答案。这可以通过元编程来完成,但这将是一个漫长的过程。事实上,XSD越复杂,代码就越长。然而,如果您将简单的XSD与基本的xs:*类型一起使用,则很容易将PHP类型转换为XML字符串 通过解析XSD,您可以动态创建一个数组,该数组类似于以下硬编码数组:
$meta = array(
'name' => 'xs:string',
'dob' => 'xs:date'
);
如果用户输入类似于:
$input = array(
'name' => 'Name',
'dob' => new DateTime('30 years ago')
);
然后,您可以动态生成:
$output = array(
'name' => convert( $input['name'] , $meta['name'] ),
'dob' => convert( $input['dob'] , $meta['dob'] )
);
关键是转换函数。通过使用“instanceof”运算符和“is_*”函数,可以确定第一个参数的数据类型。因此,您所要做的就是为每个可能的组合返回一个XML转义字符串:
php string --> xml 'xs:string'
php DateTime --> xml 'xs:date'
然后直接创建最终的XML。看看它从XSD编译PHP绑定,然后可以将PHP类序列化为XML。这篇文章没有提到“模式”一词。很有趣,但不太可能是OP想要的。我已经使用DOMDocument创建了节点,但这不是我想要的。。我希望查找模式并在以后创建它们(为此,我们可以使用DOMDocument)。如果没有类,至少有一点提示会有所帮助。正如Gordon所说,一个用例是有用的。这个项目似乎被阻止了