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

Posted 分享牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
了解更多文章可以关注微信公众号:

以上是关于Infopath入门到精通系列-4 Infopath myschema.xsd文件 解析的主要内容,如果未能解决你的问题,请参考以下文章

Infopath入门到精通系列-2 Infopath 文件内容查看

Infopath入门到精通系列-6 Infopath xsl文件解析校验

Infopath入门到精通系列-3 Infopath manifest.xsf文件 解析

Infopath入门到精通系列-5 Infopath xsl文件解析

OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解

OpenCV | OpenCV实战从入门到精通系列四 --常用函数讲解