Как получить значение узла с помощью Xerces C ++ - PullRequest
1 голос
/ 03 сентября 2011

Возможно ли, чтобы библиотека xerces-c ++ получала только значение узла назначения из следующей XML-строки или файла?

<GET>
    <Context>
        <Destination>DATA 
            <Commands>
                <GRP>VAL
                    <CAT>SET 
                        <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
                            <title>The Autobiography of Benjamin Franklin</title>
                            <author>
                              <first-name>Benjamin</first-name>
                              <last-name>Franklin</last-name>
                            </author>
                            <price>8.99</price>
                        </book>
                    </CAT>
                </GRP>
            </Commands>
        </Destination>
    </Context>
</GET>

если возможно, приведите пример кода.

1 Ответ

1 голос
/ 28 января 2012

Вы можете достичь этого, используя XPath в библиотеке Xalan C ++. Но только используя Xerces C ++ lib, вам нужно сделать это нелегко

Ниже приведена логика в виде метода:

string getDestinationValue(const DOMDocument& xmlDoc) 
{
DOMElement* elementRoot = xmlDoc->getDocumentElement();
DOMNode *child = elementRoot->getFirstChild()->getFirstChild()->getFirstChild();
string strVal;
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;
}

Надеюсь, это поможет:)

Сандипан Кармакар

Следуй за мной по: http://mycpplearningdiary.blogspot.com/

...