java 加载 xsd文件,将带有Imports的嵌入式XSD加载到DataSet中

我的目标是将带有导入的嵌入式xsd加载到DataSet中,然后基于xsd生成表 .

我正在尝试使用XML Schema加载DataSet,该架构由导入的多个XSD文件组成 . 使用位于文件系统上的文件执行此操作是没有问题的,我只需将其交给主xsd文件,所有内容都可以正常运行并解析所有xsd导入 . 我想要做的是将我的xsd嵌入到我的dll中,这样它就不会在文件系统上 . 具有嵌入式xsd文件的项目与将访问xsd文件以加载到DataSet的项目是分开的 .

DataSet.ReadXmlSchema方法可以采用流,XmlReader,字符串uri或XmlTextReader . 我没有问题加载DLL然后使用assembly.GetManifestResourceStream(schemaPath)到达主模式文件,如果我的模式只是一个文件,这将没有问题 . 问题是,一旦我将它传递给DataSet.ReadXmlSchema方法,它就无法找到任何导入 .

我尝试使用XmlReader并使用XmlReaderSettings对象和我为之前的问题编写的自定义xml解析器(我知道有效) . 我过去曾使用自定义xml解析器将嵌入到dll中的类似架构加载到XmlSchemaSet中,它就像魅力一样 . 因此,当我进行XmlReader.Create调用时,我传入使用我的自定义Xml解析器的XmlReaderSettings,但是当我将此XmlReader传递给DataSet.ReadXmlSchema方法时,它也找不到导入的模式文件 . 我在重载的GetEntity方法中设置了一个断点,它永远不会被击中 . 所以XmlReader似乎没有使用我提供的XmlResolver . 我对XmlTextReader也有同样的问题 .

关于如何将导入加载到DataSet中的嵌入式模式的任何想法?我最后的办法是将嵌入的xsd文件临时复制到文件系统以创建DataSet然后删除它们,尽管我试图避免这种情况 .

C:\Users\12114\anaconda3\envs\Missyao\python.exe "D:/Program Files/JetBrains/PyCharm 2023.1/plugins/python/helpers/pydev/pydevconsole.py" --mode=client --host=127.0.0.1 --port=13819 import sys; print('Python %s on %s' % (sys.version, sys.platform)) sys.path.extend(['D:\\py\\pythonProject1']) PyDev console: starting. Python 3.11.12 | packaged by conda-forge | (main, Apr 10 2025, 22:09:00) [MSC v.1943 64 bit (AMD64)] on win32 runfile('D:\\py\\pythonProject1\\tem相关性.py', wdir='D:\\py\\pythonProject1') Warning 3: Cannot find gdalvrt.xsd (GDAL_DATA is not defined) Traceback (most recent call last): File "rasterio\\_base.pyx", line 310, in rasterio._base.DatasetBase.__init__ File "rasterio\\_base.pyx", line 221, in rasterio._base.open_dataset File "rasterio\\_err.pyx", line 359, in rasterio._err.exc_wrap_pointer rasterio._err.CPLE_OpenFailedError: vegetation.tif: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Program Files\JetBrains\PyCharm 2023.1\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode coro = func() ^^^^^^ File "<input>", line 1, in <module> File "D:\Program Files\JetBrains\PyCharm 2023.1\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 198, in runfile pydev_imports.execfile(filename, global_vars, local_vars) # execute the script ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Program Files\JetBrains\PyCharm 2023.1\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile exec(compile(contents+"\n", file, 'exec'), glob, loc) File "D:\py\pythonProject1\tem相关性.py", line 46, in <module> calculate_correlation_tif( File "D:\py\pythonProject1\tem相关性.py", line 8, in calculate_correlation_tif with rasterio.open(veg_tif) as src_veg: ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\12114\anaconda3\envs\Missyao\Lib\site-packages\rasterio\env.py", line 463, in wrapper return f(*args, **kwds) ^^^^^^^^^^^^^^^^ File "C:\Users\12114\anaconda3\envs\Missyao\Lib\site-packages\rasterio\__init__.py", line 356, in open dataset = DatasetReader(path, driver=driver, sharing=sharing, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "rasterio\\_base.pyx", line 312, in rasterio._base.DatasetBase.__init__ rasterio.errors.RasterioIOError: vegetation.tif: No such file or directory
最新发布
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值