Php и Xpath - как получить текст внутри узла - PullRequest
5 голосов
/ 27 июня 2011

Как я могу получить текст из узла, используя xpath?

Пока я делаю это так:

$temp= $content->xpath('qwe/qwe');
$temp = each($temp[0]);
return $temp['value'];

Но, как видите, это далеко не хорошее решение: (

В c # это так же просто, как

public string readXmlVar(string xpath)
{
    XmlNode xmlNode = xml.SelectSingleNode(xpath);
    return xmlNode.InnerText;
}

Ответы [ 4 ]

8 голосов
/ 27 июня 2011

Попробуйте:

$dom = new DOMDocument;
$dom->loadXML('<root>
    <p>some text<br />some more text</p>
</root>');

$xpath = new DOMXPath($dom);
foreach ($xpath->query('/root/p/text()') as $textNode) {
    echo $textNode->nodeValue;
}

$textNode будет DOMText .

7 голосов
/ 27 июня 2011

Для SimleXmlElement просто приведите его в виде строки: return (string) $temp;.Для DomDocument используйте return $temp->nodeValue.

2 голосов
/ 28 февраля 2014
(string) current($xml->xpath("//group[@ref='HS_TYP']"))

Надеюсь, что поможет

1 голос
/ 23 июля 2015

Получит весь внутренний текст из простого элемента xml

dom_import_simplexml($xpath->query('//div[@class="h1"]')->textContent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...