如何使用 xerces c++ 获取节点值

发布于 2024-12-03 04:09:13 字数 944 浏览 2 评论 0原文

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>

如果可能的话给出示例代码。

Is it possible with xerces-c++ library getting only value of Destination Node from following XML string or file?

<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>

if possible give an example code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚风撩人 2024-12-10 04:09:13

您可以使用 Xalan C++ 库中的 XPath 来实现此目的。但仅使用 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;
}

希望这有帮助:)

Sandipan Karmakar

关注我:http://mycpplearningdiary.blogspot.com/

You can achieve this using XPath in Xalan C++ library. But only using Xerces C++ lib you need to do it the hard way

Below is the logic in the form of a method:

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;
}

Hope this helps :)

Sandipan Karmakar

Follow me on : http://mycpplearningdiary.blogspot.com/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文