A DOMElement
может содержать коллекцию других DOMElements
или DOMText
.Чтобы получить текстовое значение элемента, вам нужно вызвать метод getTextContent()
, getNodeValue
всегда вернет NULL
.Концептуально это еще один лучший способ, поскольку DOMText
является дочерним по отношению к DOMElement
, который мы можем пройти через дочерний узел и получить значение.
Ниже приведена логика в форме метода:1011 *
string getElementValue(const DOMElement& parent)
{
DOMNode *child;
string strVal;
for (child = parent.getFirstChild();child != NULL ; child = child->getNextSibling())
{
if(DOMNode::TEXT_NODE == child->getNodeType())
{
DOMText* data = dynamic_cast<DOMText*>(child);
const XMLCh* val = data->getWholeText();
strVal += XMLString::transcode(val);
}
else
{
throw "ERROR : Non Text Node";
}
}
return strVal;
}
Надеюсь, это поможет:)