如何获取两个xml标记的内容,即使其中包含另一个xml标记(PHP-xml)

如何获取两个xml标记的内容,即使其中包含另一个xml标记(PHP-xml),php,xml,Php,Xml,简单来说,假设您具有以下xml结构: <TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT> 如你所见,我需要一些帮助。 使用strip_tags()在PHP中提取此节点的文本时,我没有得到标记的内容 第一步: 我想做的是提取并得到以下字符串: "Well, I need some help as you <e>can</e>

简单来说,假设您具有以下xml结构:

<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>
如你所见,我需要一些帮助。 使用strip_tags()在PHP中提取此节点的文本时,我没有得到标记的内容

第一步:

我想做的是提取并得到以下字符串:

"Well, I need some help as you <e>can</e> see."
“嗯,正如你所看到的,我需要一些帮助。”

第二步:

我还想将
转换为其他内容,例如
,最后得到以下字符串:

"Well, I need some help as you <e>can</e> see."
“嗯,正如你所看到的,我需要一些帮助。”
我希望只有经过测试和工作的代码

提前谢谢


亲切问候

对于第一步,只需使用以下代码:

<?php
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see.</TEXT>";

$domDoc  = new DOMDocument();
$domDoc->loadXML($xml);

$domXPath  = new DOMXPath($domDoc);
$textNodes = $domXPath->query('//TEXT');

foreach ($textNodes as $textNode) {
    echo $textNode->textContent;
}

对于第二部分,您可以使用如下内容:

<?php
$xml = "<TEXT>Well, I need some help as you <CUSTOMTAG>can</CUSTOMTAG> see, <CUSTOMTAG>maybe</CUSTOMTAG>.</TEXT>";

//1st part:
$dom = new DOMDocument();
$dom->loadXML($xml);
$xPath = new DOMXPath($dom);
foreach ($xPath->query('//TEXT') as $textNode) {
  echo $textNode->textContent;
}
// 2nd part:
foreach ($xPath->query('//TEXT/CUSTOMTAG') as $find) {
  $find_value = $find->nodeValue;
  $replace = $dom->createDocumentFragment();
  $replace->appendXML('<e>'.$find_value.'</e>');
  $find->parentNode->insertBefore($replace, $find); 
  $parentnode = $find->parentNode;
  $parentnode->removeChild($find);
}
$result = $dom->saveHTML();
echo $result;
?>


谢谢您的回答!:-)不客气。代码可能不是最整洁的,但它可以工作(也适用于多个
实例)。谢谢您的回答!:-)使用SimpleXML有可能达到同样的效果吗?据我所知,我在处理XML的大多数时候都使用PHP SimpleXML,但在这种情况下,我认为DOMDocument更合适。非常感谢!你们俩都帮了大忙!干杯“我希望您只编写经过测试和运行的代码。”Harry,我们非常感谢您尝试自己编写代码并展示您所做的尝试。这不是“订购代码”。