如何使用php基于模式创建xml文档?

如何使用php基于模式创建xml文档?,php,xml,xsd,Php,Xml,Xsd,我想根据用户提供的数据创建一个xml文件 我可以使用simplexml或DOMDocument创建xml文件,甚至DOMDocument中也有一个选项可以使用模式验证xml文档 但我需要的不是使用xml类创建节点和添加值,而是使用存储在其他地方的与架构相关的数据创建xml文件吗? 我认为在.net中有一个从数据集读取数据写入xml的选项。。但是我在PHP中找不到这样的东西 这可能吗?有没有这方面的课程 如果没有预定义的类,至少有任何方法的帮助吗 编辑: 我编辑这个问题是因为你们中的一些人似乎不清

我想根据用户提供的数据创建一个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所说,一个用例是有用的。这个项目似乎被阻止了