0

好吧,我有点难过。在操作 XML 时,我更熟悉 Python,但如果可能的话,我想在这种情况下使用 PHP。

是否有一种相对简单的方法可以用另一组元素替换 XML 文件中的一大块文本(给定节点的所有子节点和值)?

从此开始:

<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:fedora="info:fedora/fedora-system:def/relations-external#" xmlns:myns="http://www.nsdl.org/ontologies/relationships#">
    <rdf:Description rdf:about="info:fedora/cfai:EB01a004">
        <fedora:isMemberOfCollection rdf:resource="info:fedora/cfai:collection"/>
    </rdf:Description>
</rdf:RDF>

我希望它看起来像这样:

<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:fedora="info:fedora/fedora-system:def/relations-external#" xmlns:myns="http://www.nsdl.org/ontologies/relationships#">
    <rdf:Description rdf:about="info:fedora/cfai:EB01a004">
        <element>These are new elements that I paste in.</element>
        <element>This is another, basically just a string of elements</element>
    </rdf:Description>
</rdf:RDF>

我已经用simple_xml_loadfile加载了它,我已经用registerXPathNamespace烹饪了命名空间,但是我很难弄清楚如何 1)删除节点,以及 2)在它们的位置插入我自己的文本块。

任何帮助将不胜感激。

4

2 回答 2

0

您可以使用 unset() 删除节点:

unset($xml->node);

然后添加一个元素:

$node = $xml->addChild('node');
$node->addChild('title', 'i'm a node');
$node->addChild('title2', 'another node');
于 2013-05-14T21:10:56.237 回答
0

最终序列化 XML,然后使用正则表达式查找和替换元素内的所有内容。一种奇怪的处理方式,但很适合这种情况。不过感谢大家的建议,帮助推动了事情的发展。

于 2013-05-15T02:34:25.560 回答