簡體   English   中英

未定義的屬性:DOMElement :: $ wholeText

[英]Undefined property: DOMElement::$wholeText

我收到以下錯誤: Undefined property: DOMElement::$wholeText"當我循環查詢並嘗試回顯整個text結果時。

$try = $xpath->query('//h2/following-sibling::ul/li | //h2/following-sibling::h3/text()');

foreach($try as $values){
    echo $values->wholeText;    

    //echo '<pre>', print_r($values), '</pre>';
}

$xpath->query返回以下時,我print_r$values從在foreach變量。

DOMText Object {
    [wholeText] => House Data
    [data] => House Data
    [length] => 10
    [nodeName] => #text
    [nodeValue] => House Data
    [nodeType] => 3
    [parentNode] => (object value omitted)
    [childNodes] => 
    [firstChild] => 
    [lastChild] => 
    [previousSibling] => 
    [nextSibling] => 
    [attributes] => 
    [ownerDocument] => (object value omitted)
    [namespaceURI] => 
    [prefix] => 
    [localName] => 
    [baseURI] => 
    [textContent] => House Data
)

DOMElement Object (
    [tagName] => li
    [schemaTypeInfo] => 
    [nodeName] => li
    [nodeValue] => 12 doors are very expensive
    [nodeType] => 1
    [parentNode] => (object value omitted)
    [childNodes] => (object value omitted)
    [firstChild] => (object value omitted)
    [lastChild] => (object value omitted)
    [previousSibling] => 
    [nextSibling] => (object value omitted)
    [attributes] => (object value omitted)
    [ownerDocument] => (object value omitted)
    [namespaceURI] => 
    [prefix] => 
    [localName] => li
    [baseURI] => 
    [textContent] => 12 doors are very expensive
)

DOMText Object (
    [wholeText] => Car Data
    [data] => Car Data
    [length] => 8
    [nodeName] => #text
    [nodeValue] => Car Data
    [nodeType] => 3
    [parentNode] => (object value omitted)
    [childNodes] => 
    [firstChild] => 
    [lastChild] => 
    [previousSibling] => 
    [nextSibling] => 
    [attributes] => 
    [ownerDocument] => (object value omitted)
    [namespaceURI] => 
    [prefix] => 
    [localName] => 
    [baseURI] => 
    [textContent] => Car Data
)

DOMElement Object (
    [tagName] => li
    [schemaTypeInfo] => 
    [nodeName] => li
    [nodeValue] => The car has 4 doors
    [nodeType] => 1
    [parentNode] => (object value omitted)
    [childNodes] => (object value omitted)
    [firstChild] => (object value omitted)
    [lastChild] => (object value omitted)
    [previousSibling] => 
    [nextSibling] => (object value omitted)
    [attributes] => (object value omitted)
    [ownerDocument] => (object value omitted)
    [namespaceURI] => 
    [prefix] => 
    [localName] => li
    [baseURI] => 
    [textContent] => The car has 4 doors
)

但是如果我echo $values->nodeValue; 它有效,盡管它回顯了所有數據,但我只是試圖單獨訪問整個文本,我不明白為什么會彈出此錯誤?

更新:

現在,我仔細看了一下,看到echo $values->wholeText; 它試圖回顯DOMElement而不是DOMText。

回顯時如何引用DOMText而不是DOMElement?

沒什么復雜的: wholeTextDOMText屬性,而不是DOMNode屬性。 當XPath查詢的//h2/following-sibling::ul/li部分成功並返回非DOMText實例的節點時,您自然會得到此錯誤。

如果要獲取li元素內的文本,則使用便捷的方法DOMNode::nodeValue是一個好方法。 請注意,由於DOMText類是從DOMNode繼承的,因此該方法也可用於DOMText實例。

我可以通過檢查nodeType來解決此問題。

nodeType 1是元素,3是文本,依此類推,您可以在此處找到所有的nodeTypes。

if($values->nodeType === 3){
    echo $values->textContent;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM