Infopath入门到精通系列-4 Infopath myschema.xsd文件 解析

1、Infopath 介绍

Infopath工具保存后默认生成xsn格式的文件。
在这里插入图片描述
将上图中的文件后缀名修改为全国面上广告申请.zip 并进行解压。如下图所示:
在这里插入图片描述
效果图如下:
在这里插入图片描述

2、myschema.xsd文件说明

myschema.xsd文件内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema targetNamespace="http://schemas.microsoft.com/office/infopath/2003/myXSD/2021-08-11T07:06:00" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2021-08-11T07:06:00" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<xsd:element name="myFields">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="my:申请单编号" minOccurs="0"/>
				<xsd:element ref="my:附件上传" minOccurs="0"/>
				<xsd:element ref="my:关联文档" minOccurs="0"/>
				<xsd:element ref="my:上传电子发票" minOccurs="0"/>
				<xsd:element ref="my:制表人" minOccurs="0"/>
				<xsd:element ref="my:所属部门" minOccurs="0"/>
				<xsd:element ref="my:制表时间" minOccurs="0"/>
				<xsd:element ref="my:联系方式" minOccurs="0"/>
				<xsd:element ref="my:业务发生公司" minOccurs="0"/>
				<xsd:element ref="my:申请单状态" minOccurs="0"/>
				<xsd:element ref="my:活动类型" minOccurs="0"/>
				<xsd:element ref="my:品牌大类" minOccurs="0"/>
				<xsd:element ref="my:投入类型" minOccurs="0"/>
				<xsd:element ref="my:开始日期" minOccurs="0"/>
				<xsd:element ref="my:结束日期" minOccurs="0"/>
				<xsd:element ref="my:费用投向" minOccurs="0"/>
				<xsd:element ref="my:是否比价招标" minOccurs="0"/>
				<xsd:element ref="my:采购类型" minOccurs="0"/>
				<xsd:element ref="my:是否涉及票务促销" minOccurs="0"/>
				<xsd:element ref="my:申请金额合计" minOccurs="0"/>
				<xsd:element ref="my:申请金额合计大写" minOccurs="0"/>
				<xsd:element ref="my:审核金额合计" minOccurs="0"/>
				<xsd:element ref="my:审核金额合计大写" minOccurs="0"/>
				<xsd:element ref="my:活动投放规划" minOccurs="0"/>
				<xsd:element ref="my:前期调研情况" minOccurs="0"/>
				<xsd:element ref="my:采购类型申请理由及依据" minOccurs="0"/>
				<xsd:element ref="my:备注" minOccurs="0"/>
				<xsd:element ref="my:目前实施项目及费用简述" minOccurs="0"/>
				<xsd:element ref="my:费用列支渠道" minOccurs="0"/>
				<xsd:element ref="my:预算使用年度" minOccurs="0"/>
				<xsd:element ref="my:组1" minOccurs="0"/>
			</xsd:sequence>
			<xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="申请单编号" type="xsd:string"/>
	<xsd:element name="组1">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="my:组2" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="组2">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="my:行项目号" minOccurs="0"/>
				
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="行项目号" type="xsd:string"/>
	<xsd:element name="费用类型" type="xsd:string"/>
	<xsd:element name="媒体大类" type="xsd:string"/>
	<xsd:element name="媒体小类" type="xsd:string"/>
	<xsd:element name="活动形式" type="xsd:string"/>
	<xsd:element name="推广品牌id" type="xsd:string"/>
	<xsd:element name="推广品牌" type="xsd:string"/>
	<xsd:element name="数量" type="xsd:string"/>
	<xsd:element name="单位" type="xsd:string"/>
	<xsd:element name="申请金额" type="xsd:string"/>
	<xsd:element name="厂方支持比例" type="xsd:string"/>
	<xsd:element name="考核大区" type="xsd:string"/>
	<xsd:element name="考核比例" type="xsd:string"/>
	<xsd:element name="考核金额" type="xsd:string"/>
	<xsd:element name="审核金额" type="xsd:string"/>
</xsd:schema>

3、myschema.xsd文件属性

myschema.xsd文件内容有如下几个标签构成:
xsd:element 标签,记录如下几个比较核心的属性:

name:名称
type:数据类型。
complexType:类似table下面的tr。一个对象可能聚合多个对象。

4、myschema.xsd文件java解析

下面代码包含上述代码结构中属性的解析
tring fXsd = loadResource("myschema.xsd");
        if (fXsd == null) {
            throw new BusinessException(ResourceUtil.getString("DataDefine.CannotReadFileFormResource") + "myschema.xsd");
        }


        try {
            Document xsfdocument = DocumentHelper.parseText(fXsd);
            xsd.loadFromInfoPathXSD(xsfdocument.getRootElement());
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new BusinessException(e.getMessage());
        }
         for (int i = 0; i < this.fDataElementList.size(); i++) {
            if (this.fDataElementList.get(i) instanceof InfoPath_DataGroup) {
                InfoPath_DataGroup datagroup = (InfoPath_DataGroup) this.fDataElementList.get(i);
                if (datagroup.getSubElement().size() == 0) {
                    throw new BusinessException(ResourceUtil.getString("formoper.dupform.label") + datagroup.getDataName() + ResourceUtil.getString("form.dulform.label"));
                }

                for (int j = 0; j < datagroup.getSubElement().size(); j++) {
                    if (datagroup.getSubElement().get(j) instanceof InfoPath_DataGroup) {
                        InfoPath_DataGroup subdatagroup = (InfoPath_DataGroup) datagroup.getSubElement().get(j);
                        if (subdatagroup.getSubElement().size() == 0) {
                            throw new BusinessException(ResourceUtil.getString("formoper.dupform.label") + subdatagroup.getDataName() + ResourceUtil.getString("form.dulform.label"));
                        }
                    }
                }
            }
        }
    

infopath地址:https://gitee.com/pangu-dm/infopath

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值