【发布时间】:2020-11-09 05:13:16
【问题描述】:
我正在编写 VBA 代码以将每个记录从特定查询导出到单个 XML 文件。
每个 XML 文件都将具有来自 MS Access 查询的“一个”记录,并且每个 XML 文件的保存目标对于查询中找到的每个记录输出都不同。
在查询中,有一个值将具有详细路径,记录应保存在何处。因此,循环将能够根据读取的每条记录将每个 XML 文件保存到目标位置。
我有我的“临时”XML 导出。 (出于本示例的目的,我已将每个值的数据替换为“valueName_here”,但在每个值上,这些值会有所不同。):
'temp' xml 输出:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
<qryWMC0302a>
<WMCID>18</WMCID>
<ID>176068</ID>
<Title>Title_here</Title>
<TitleSupp>TitleSupp_Here</TitleSupp>
<Date>Date_Here</Date>
<Cast>leadPerformer_here|leadPerformer_here|leadPerformer_here|leadPerformer_here|etc|</Director>
<Overview>Overview_Here</Overview>
<Tagline>Tagline_Here</Tagline>
<Duration>duration_here</Duration>
<StudioID>StudioID_ID</StudioID>
<DataProviderID>DataProviderID_here</DataProviderID>
<MPAARatingID>MPAARatingID_Here</MPAARatingID>
<Rating>Rating_Here</Rating>
<ProviderRating>ProviderRating_Here</ProviderRating>
<MasterTableID>MasterTableID_Here</MasterTableID>
<Studio>studio_here</Studio>
<DataProvider>DataProvider_Here</DataProvider>
<MPAARating>MPAARating_Here</MPAARating>
<PathID01>PathID01_Here</PathID01>
<PathID02>PathID02_Here</PathID02>
<Path03>Path03_Here</Path03>
<Path>Path</Path>
<Pth01LkUp>Pth01LkUp_Here</Pth01LkUp>
<Pth02LkUp>00\Pth02LkUp_Here</Pth02LkUp>
<XMLID>XMLID_Here</XMLID>
<MovieVideo_TS>MovieVideo_TS_here</MovieVideo_TS>
<XMLsmallCoverParams>Path\To\File\Here</XMLsmallCoverParams>
<XMLlargeCoverParams>Path\To\File\Here</XMLlargeCoverParams>
<Folder>Path\To\File\Here</Folder>
<FolderL>Path\To\File\Here</FolderL>
<Chk>Chk_here</Chk>
</qryWMC0302a>
</dataroot>
目标是使最终的 xml 文件看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<METADATA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<NeedsAttribution>true</NeedsAttribution>
<DvdId>
</DvdId>
<MDR-DVD>
<MetadataExpires>Expiration_Date_And_Time_Here</MetadataExpires>
<Version>Verion_Number_Here</Version>
<leadPerformer>leadPerformer_here|leadPerformer_here|leadPerformer_here|leadPerformer_here|etc|</leadPerformer>
<director>director_Here | director_Here, etc</director>
<dvdTitle>dvdTitle_here</dvdTitle>
<MPAARating>MPAARating_Here</MPAARating>
<dataProvider>dataProvider_here</dataProvider>
<releaseDate>releaseDate_here</releaseDate>
<duration>duration_here</duration>
<genre>genre_here|genre_here|etc</genre>
<XMLsmallCoverParams>Path\To\File\Here</XMLsmallCoverParams>
<XMLlargeCoverParams>Path\To\File\Here</XMLlargeCoverParams>
<studio>studio_here</studio>
<title>
<titleNum>Number_Here</titleNum>
<titleTitle>titleTitle_here</titleTitle>
<synopsis>Details of the record-film will be here.</synopsis>
<leadPerformer>leadPerformer_here|leadPerformer_here|leadPerformer_here|leadPerformer_here|etc|</leadPerformer>
<director>director_Here | director_Here, etc</director>
<providerRating>providerRating_here</providerRating>
<studio>studio_here</studio>
<MPAARating>MPAARating_Here</MPAARating>
<communityRating>communityRating_here</communityRating>
</title>
</MDR-DVD>
</METADATA>
在 'temp' xml 输出中,有一些在 'final' xml 文件中不需要的附加值;但是,VBA 循环中需要一些“附加”值来了解 xml 最终文件的“名称”(每个“最终”xml 文件将始终具有不同的名称)以及“最终”文件所在的路径xml 文件将被导出到(每个“最终”xml 文件将被导出到不同的位置\路径)
我尝试调整工作 xsl(XSLT 样式表)的答案,该 xsl(XSLT 样式表)会将所需元素从我的“临时”xml 文件复制到“最终”格式正确的 xml 文件中,如此处发布的示例所示。
我找到的最接近的:How do I use Access VBA to export to XML with headings for various records?。
如何发布 xsl 模板以从“temp”xml 输出中获取输入并复制到“final”xml 文件?
【问题讨论】:
-
您能否提供“临时”和“最终”的真实样本,因为不清楚字段映射是什么。例如,您在“决赛”中有两次leadPerformer?
来自哪里?为什么 是子元素?