DomNode::get_content
(PHP 4 >= 4.2.0)
DomNode::get_content — Gets content of node
Описание
string DomNode::get_content
( void
)
This function returns the content of the actual node.
Пример #1 Getting a content
<?php
if (!$dom = domxml_open_mem($xmlstr)) {
echo "Error while parsing the document\n";
exit;
}
$root = $dom->document_element();
$node_array = $root->get_elements_by_tagname("element");
for ($i = 0; $i<count($node_array); $i++) {
$node = $node_array[$i];
echo "The element[$i] is: " . $node->get_content();
}
?>
[an error occurred while processing the directive]
- DomAttribute::name
- DomAttribute::set_value
- DomAttribute::specified
- DomAttribute::value
- DomDocument::add_root
- DomDocument::create_attribute
- DomDocument::create_cdata_section
- DomDocument::create_comment
- DomDocument::create_element_ns
- DomDocument::create_element
- DomDocument::create_entity_reference
- DomDocument::create_processing_instruction
- DomDocument::create_text_node
- DomDocument::doctype
- DomDocument::document_element
- DomDocument::dump_file
- DomDocument::dump_mem
- DomDocument::get_element_by_id
- DomDocument::get_elements_by_tagname
- DomDocument::html_dump_mem
- DomDocument::xinclude
- DomDocumentType::entities
- DomDocumentType::internal_subset
- DomDocumentType::name
- DomDocumentType::notations
- DomDocumentType::public_id
- DomDocumentType::system_id
- DomElement::get_attribute_node
- DomElement::get_attribute
- DomElement::get_elements_by_tagname
- DomElement::has_attribute
- DomElement::remove_attribute
- DomElement::set_attribute_node
- DomElement::set_attribute
- DomElement::tagname
- DomNode::add_namespace
- DomNode::append_child
- DomNode::append_sibling
- DomNode::attributes
- DomNode::child_nodes
- DomNode::clone_node
- DomNode::dump_node
- DomNode::first_child
- DomNode::get_content
- DomNode::has_attributes
- DomNode::has_child_nodes
- DomNode::insert_before
- DomNode::is_blank_node
- DomNode::last_child
- DomNode::next_sibling
- DomNode::node_name
- DomNode::node_type
- DomNode::node_value
- DomNode::owner_document
- DomNode::parent_node
- DomNode::prefix
- DomNode::previous_sibling
- DomNode::remove_child
- DomNode::replace_child
- DomNode::replace_node
- DomNode::set_content
- DomNode::set_name
- DomNode::set_namespace
- DomNode::unlink_node
- DomProcessingInstruction::data
- DomProcessingInstruction::target
- DomXsltStylesheet::process
- DomXsltStylesheet::result_dump_file
- DomXsltStylesheet::result_dump_mem
- domxml_new_doc
- domxml_open_file
- domxml_open_mem
- domxml_version
- domxml_xmltree
- domxml_xslt_stylesheet_doc
- domxml_xslt_stylesheet_file
- domxml_xslt_stylesheet
- domxml_xslt_version
- xpath_eval_expression
- xpath_eval
- xpath_new_context
- xpath_register_ns_auto
- xpath_register_ns
- xptr_eval
- xptr_new_context
Коментарии
Here's a routine I wrote that acts like get_content() but returns embedded XHTML in the string returned. I needed this as I was wanting to embed HTML formatting codes in my HTML (e.g., "<br />") and converting them to HTML entities or using CDATA was a huge hassle.
<?php
function GetContentAsString($node) {
$st = "";
foreach ($node->child_nodes() as $cnode)
if ($cnode->node_type()==XML_TEXT_NODE)
$st .= $cnode->node_value();
else if ($cnode->node_type()==XML_ELEMENT_NODE) {
$st .= "<" . $cnode->node_name();
if ($attribnodes=$cnode->attributes()) {
$st .= " ";
foreach ($attribnodes as $anode)
$st .= $anode->node_name() . "='" .
$anode-node_value() . "'";
}
$nodeText = GetContentAsString($cnode);
if (empty($nodeText) && !$attribnodes)
$st .= " />"; // unary
else
$st .= ">" . $nodeText . "</" .
$cnode->node_name() . ">";
}
return $st;
}
?>
Seems that get_content() always returns utf-8.
Opening document with something like
$dom->dump_mem(true,"ISO-8859-1")
makes no difference!
get_content() always returns UTF-8 (as should be!).
To get the content right just code it like
$myContent = utf8_decode($myNode->get_content());
Works fine!
Only to correct a very small error, but maybe difficult to find in che function GetContentAsString posted by someone in April 2005.
There was $anode-node_value() instead of $anode->node_value().
This is the right version:
<?php
function GetContentAsString($node) {
$st = "";
foreach ($node->child_nodes() as $cnode)
if ($cnode->node_type()==XML_TEXT_NODE)
$st .= $cnode->node_value();
else if ($cnode->node_type()==XML_ELEMENT_NODE) {
$st .= "<" . $cnode->node_name();
if ($attribnodes=$cnode->attributes()) {
$st .= " ";
foreach ($attribnodes as $anode)
$st .= $anode->node_name() . "='" .
$anode->node_value() . "'";
}
$nodeText = GetContentAsString($cnode);
if (empty($nodeText) && !$attribnodes)
$st .= " />"; // unary
else
$st .= ">" . $nodeText . "</" .
$cnode->node_name() . ">";
}
return $st;
}
?>
To print the node simply create a new document import the node and save it to html or whatever you need
e.g.:
<?php
$temp = new DOMDocument('1.0', 'UTF-8');
$temp_node = $temp->importNode($mynode, TRUE);
$temp->appendChild($temp_node);
$temp->saveHTML();
?>