如何获取两个xml标记的内容,即使其中包含另一个xml标记(PHP-xml)
简单来说,假设您具有以下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>
<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,我们非常感谢您尝试自己编写代码并展示您所做的尝试。这不是“订购代码”。