-1

我正在 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 的值。我应该在 Zend Framework 中使用哪种 XML 操作方法以及如何使用?

提前致谢。

4

2 回答 2

1

Zend Framework 提供了Zend_DOM,它建立在PHP 的本地 DOM 扩展(链接我的)之上:

Zend_Dom提供用于处理 DOM 文档和结构的工具。目前,我们提供了一个使用XPathCSS 选择器Zend_Dom_Query查询 DOM 文档的统一接口。

如果不需要选择器,则不需要Zend_DOM,但可以使用任何原生 XML 扩展

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

要使用Zend_Dom_Query,您可以实例化一个Zend_Dom_Query对象,可选择将文档传递给查询(字符串)。一旦你有了一个文件,你可以使用query()orqueryXpath()方法;每个方法都将返回一个Zend_Dom_Query_Result具有任何匹配节点的对象。

简而言之:

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

然后 $identification 将包含一个DOMElement您可以像任何其他DOMElement. StackOverflow 上有很多关于如何更改 XML 文件中的值的示例,所以我不会在这里重复。

更改后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 解析器的概述,请参见

于 2012-06-14T06:17:54.120 回答
0

最好使用以下结构:

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

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

于 2012-06-14T06:10:25.010 回答