gpt4 book ai didi

c# - c#中xlsx中xml的文件路径

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:15 24 4
gpt4 key购买 nike

我正在使用 Saxon 对 excel 文件中的 xml 进行 xslt 转换,其中转换是在 xlsx 文件中的 .rels xml 文件上完成的。我目前有一个解决方法,我已将 xlsx 文件的全部内容解压缩到一个单独的文件夹中。但是,为了简单起见,我的程序将 xlsx 文件作为输入,所以我想知道是否有更简单的方法让我的程序指向 xlsx 文件中的 xml 而无需解压缩内容。我试过指向 file.xlsx\_rels\.rels 的路径,但这似乎不起作用。我目前用于此输入的代码是

String inputFile = "file.xlsx_folder\\_rels\\.rels"
XdmNode input = processor.NewDocumentBuilder().Build(new Uri(inputFile));

但我希望直接在 xlsx 中包含该点。

最佳答案

是的,有一个更简单的方法,您不需要解压缩整个文件。

不要将文件路径作为参数传递给 Saxon APIs Build 函数,而是传递 xslx 文件未压缩部分的 XmlReader 或 Stream 实例。

System.IO.Packaging.Package的Open静态方法可用于获取一个 Package 实例,您可以在该实例上调用 GetStream 来解压缩您需要的部分并将其作为 Stream 返回。 Package 处理符合 Open Packaging Convention 的文件,例如 Excel 的 xslx 格式。

下面的代码将包部分解压缩为一个 Stream,使用它来创建一个 XmlReader 实例,最后将 XmlReader 作为参数传递给 Build 函数:

            string filename = "c:\\test\\file.xslx";
string partPath = "/_rels/.rels";

Package xpsPackage = Package.Open(fileName, FileMode.Open)
Uri partUri = new Uri(partPath, UriKind.Relative);
PackagePart xpsPart = xpsPackage.GetPart(partUri);

Stream xpsStream = xpsPart.GetStream(FileMode.Open)
XmlReader xmlReader = XmlReader.Create(xpsStream);

XdmNode input = processor.NewDocumentBuilder().Build(xmlReader);

关于c# - c#中xlsx中xml的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960607/

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