在Zend Framework中处理XML文档并更改内容

时间:2012-06-14 05:38:51

标签: php xml zend-framework xml-parsing

我正在Zend Framework上构建一个应用程序,现在需要操作一个xml文件并更改它的一些内容,以便我可以使用xml作为请求文件来获取其他服务器的响应。现在经过谷歌搜索后,我看到simplexml比其他人更受欢迎,但我不确定哪种实现对Zend Framework更好。任何建议都会非常有帮助。 我的请求XML文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
    <aa>
        <bb>
            <cc>
                <dd>
                    <ee/>
                </dd>
                <ff>
                    <Identification _FirstName="******" _LastName="*****" _Num="********">
                        <gg/>
                    </Identification>
                </ff>
            </cc>
        </bb>
    </aa>

现在,我需要能够更改_FirstName,_LastName和Num的值。我应该使用哪种XML操作方法与Zend Framework以及如何使用?

提前致谢。

2 个答案:

答案 0 :(得分:1)

Zend Framework提供了Zend_DOM library,它基于PHP's native DOM extension(我的联系):

  

Zend_Dom提供了处理DOM文档和结构的工具。目前,我们提供Zend_Dom_Query,它提供了使用XPathCSS selectors查询DOM文档的统一界面。

如果您不需要选择器,则不需要Zend_DOM,但可以使用native XML extensions中的任何一个。

参考指南中解释了如何使用Zend_DOM

  

要使用Zend_Dom_Query,您可以实例化Zend_Dom_Query对象,可选择将文档传递给查询(字符串)。获得文档后,您可以使用query()queryXpath()方法;每个方法都将返回一个Zend_Dom_Query_Result对象,其中包含任何匹配的节点。

简而言之:

$dom = new Zend_Dom_Query($xmlString);
$results = $dom->query('Identification');
$identification = $results->current();
然后

$ identification将包含DOMElement,您可以像其他任何DOMElement一样进行更改。在how to change values in an XML file上的StackOverflow上有很多例子,所以我在此不再重复。

更改DOMElement后,您需要获取DOMDocument以将已更改的文档序列化为XML。为此,您可以使用

$doc = $identification->ownerDocument;
$doc->save('filename.xml'); // to save it to a file
$xmlString = $doc->saveXML(); // to save it to a variable

有关X(HT)ML解析器的概述,请参阅

答案 1 :(得分:0)

最好使用以下结构:

<Identification>
     <FirstName>*****</FirstName>
     <LastName>*****</LastName>
     <Num>*****</Num>
   </Identification>

并使用Zend_Config_Xml类:http://framework.zend.com/manual/en/zend.config.adapters.xml.html