gpt4 book ai didi

c++ - 从 Xerces 获取模式数据类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:14 27 4
gpt4 key购买 nike

我在 Xerces C++ 中使用 SAX2,并希望在处理元素时获取 XML 模式数据,以便我知道它们在模式中定义的类型。我怎样才能做到这一点?

最佳答案

好的,我知道怎么做了。有关该主题的稀疏文档。显然,我需要将 XMLReaderFactory::createXMLReader() 返回的 SAX2XMLReader 转换为 SAX2XMLReaderImpl。然后我可以在该接口(interface)上注册一个 PSVIHandler 实现。我必须提供我自己的 PSVIHandler 实现,因为我在 Xerces 中找不到默认实现。

一旦 PSVI 的这个实现注册到 SAX2XMLReaderImpl,我就会创建一个 ContentHandler impl,并将 PSVI 处理程序 impl 传递给它的构造函数。然后我使用 SAX2XMLReaderImpl 注册 ContentHandler。然后,当我进行解析时,我可以从 PSVIHandler 访问信息以获取与架构相关的信息。

这一切看起来很笨拙,PSVIHandler 界面看起来很不友好。也许有更好的方法。

这是一个代码片段:

  SAX2XMLReaderImpl* parser = dynamic_cast<SAX2XMLReaderImpl*>(XMLReaderFactory::createXMLReader());
PSVIHandler* pSchemaHandler = new MyPSVIHandler();
DefaultHandler* defaultHandler = new MyXMLHandler(pSchemaHandler);
parser->setContentHandler(defaultHandler);
parser->setErrorHandler(defaultHandler);
parser->setPSVIHandler(pSchemaHandler);

关于c++ - 从 Xerces 获取模式数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3858889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com