gpt4 book ai didi

java - 来自 Java 的 Xerces-C XSModel 端口

转载 作者:行者123 更新时间:2023-12-01 19:44:15 25 4
gpt4 key购买 nike

我正在尝试利用 Xerces v3.2.2 移植一些 Java 代码,加载架构文件、检索 XSModel* 并将其解析为一些自定义数据结构。

JAVA

import org.apache.xerces.XSLoader;
import org.apache.xerces.XSModel;

XSImplementation xsLoader = null;
XSLoader xsLoader = null;
XSModel xsModel = null;

xsImpl = (XSImplmentation) domRegistry.getDOMImplementation("XS-Loader");
xsLoader = xsImpl.createXSLoader(null);
xsModel = xsLoader.loadURI("path-to-schema.xsd");
myDataStruct = new MyDataStruct(xsModel);

我在 Xerces-c 文档中找不到任何可以产生类似结果的内容。据我所知,我可以通过 xercesc::AbstractDOMParserxercesc::GrammarResolver* 访问 XSModel* 但这会要求我从解析器派生,因为它是 protected 函数。

CPP

#include <xercesc/parsers/XercesDOMParser.hpp>

using namespace xercesc;

class MyDOMParser : public XercesDOMParser
{
public:
using AbstractDOMParser::getGrammarResolver;
};

int main()
{
XMLPlatformUtils::Initialize();

MyDOMParser parser;
parser.loadGrammar("path-to-schema.xsd", Grammar::GrammarType::SchemaGrammarType);
auto resolver = parser.getGrammarResolver();
auto xsModel = resolver->getXSModel();
MyDataStruct myDataStruct{xsModel};
return 0;
}

这是我必须走的路线吗?这还能用吗?是否有其他例子可以显示更好的方法?

最佳答案

我为CPP尝试的上述解决方案似乎确实实现了我想要实现的目标。通过从 XercesDOMParser 派生,我能够访问 GrammarResolver,从而访问 XSModel。该模型似乎包含我的数据结构解析所需的数据。

关于java - 来自 Java 的 Xerces-C XSModel 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59144245/

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