我有一个接受这个 xml 文件的类:
<?xml version="1.0" encoding="utf-8" ?>
<pagedata>
<language>en-es</language>
<meta>
<![CDATA[
<title>web page</title>
]]>
</meta>
<pagecontent>
<class>test</class>
</pagecontent>
</pagedata>
并使用 XML_Unserializer 将其变异为数组。它成为了:
Array
(
[language] => en-US
[meta] => <title></title>
[pagecontent] => Array
(
[class] => test
)
然后我有返回数组中键值的方法。因此,例如,如果我想要使用的语言$class->getData('language')
或$class->getData('pagecontent:class')
.
我们不再支持 PHP4,所以我现在可以依赖原生 XML 实现。我使用过 SimpleXML 和标准的 php DOM 库。我更喜欢后者,因为它更强大、更灵活,而且 simpleXML 带有一些注意事项。
由于我使用了反序列化器类,几乎我所有的方法都与函数方法交互,例如foreach
. 我想知道将其保留为数组是否值得,这样可以避免我重构所有方法?另外,我知道有时候抓取一个元素的整个 nodeValue 是很痛苦的,因为你必须实现如下方法:
function innerHTML($node){
$doc = new DOMDocument();
foreach ($node->childNodes as $child)
$doc->appendChild($doc->importNode($child, true));
return $doc->saveHTML();
}
而且多次使用该方法似乎效率低下,因为它总是创建一个 DOMDocument。我可能会重构该方法,以便它一遍又一遍地使用相同的 DOMDocument 并附加片段,但这似乎有点过头了。
对于这种方式的任何输入,我将不胜感激,我是否应该使用标准 DOM 库,如果是,我是否应该重构我的所有方法以使用 DOM 函数或创建一个数组并保持我的方法不变,以便降低引入新错误的机会?
谢谢。