使用可变元素将数据从Excel导出到XML

时间:2016-06-17 11:23:04

标签: xml excel xsd

我需要创建XML文档,但希望使用Excel自动执行该过程,因为我无法将数百个值复制并粘贴到XML文档中。我是Excel的这个功能的新手,但是我遇到了元素布局的问题。这是最终XML文档的示例:

<?xml version="1.0" encoding="UTF-8"?>
<ANALYSIS_SET>
    <ANALYSIS alias="Test Analysis 1" center_name="NeurOmics" broker_name="EGA" xmlns:com="SRA.common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <TITLE>Bed data hsp 1</TITLE>
        <DESCRIPTION>Test of NeurOmics Tuebingen HSP Data 1</DESCRIPTION>
        <STUDY_REF accession="EGAS00001000697"></STUDY_REF>
        <SAMPLE_REF accession="EGAN00001409012"></SAMPLE_REF>
        <RUN_REF accession="EGAR00001446342"></RUN_REF>
        <SAMPLE_REF accession="EGAN00001409040"></SAMPLE_REF>
        <RUN_REF accession="EGAR00001446343"></RUN_REF>
        <SAMPLE_REF accession="EGAN00001404184"></SAMPLE_REF>
        <RUN_REF accession="EGAR000016818343"></RUN_REF>
        <SAMPLE_REF accession="EGAN0000148740"></SAMPLE_REF>
        <RUN_REF accession="EGAR00001431643"></RUN_REF>
        <ANALYSIS_TYPE>
            <SEQUENCE_ANNOTATION/>
        </ANALYSIS_TYPE>
        <FILES>
            <FILE filename="TUE-hpHSPv2_TargetRegions.bed" filetype="bed"/>
        </FILES>
    </ANALYSIS>
    <ANALYSIS alias="Test Analysis 2" center_name="NeurOmics" broker_name="EGA" xmlns:com="SRA.common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <TITLE>BED data ataxia 1</TITLE>
        <DESCRIPTION>Test of NeurOmics Tuebingen Ataxia Data 1</DESCRIPTION>
        <STUDY_REF accession="EGAS00001000694"></STUDY_REF>
        <SAMPLE_REF accession="EGAN00001408934"></SAMPLE_REF>
        <RUN_REF accession="EGAR00001446272"></RUN_REF>
        <SAMPLE_REF accession="EGAN00001408935"></SAMPLE_REF>
        <RUN_REF accession="EGAR00001446271"></RUN_REF>
        <ANALYSIS_TYPE>
            <SEQUENCE_ANNOTATION/>
        </ANALYSIS_TYPE>
        <FILES>
            <FILE filename="TUE-hpSCAv1_TargetRegions.bed" filetype="bed"/>
        </FILES>
    </ANALYSIS>

我遇到问题的部分是元素SAMPLE_REFRUN_REF,因为在每个ANALYSIS部分中,可以有任意数量的这些配对值。其余我认为我可以弄明白,现在我只是试图以我可以复制到XML文档的格式中获取该部分,因为这是一直需要的部分。无论如何,我为Excel设置了这个XSD文件:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="ANALYSIS_SET">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="ANALYSIS" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <!-- single sample information -->
                            <xsd:element name="refname" type="xsd:string"/>
                            <xsd:element name="accession" type="xsd:string"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

然后,我将其链接到Excel电子表格,其中包含refname列和accession列,然后导出到XML。这就是我得到的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ANALYSIS_SET>
    <ANALYSIS>
        <refname>GS130178</refname>
        <accession>EGAR00001446342</accession>
    </ANALYSIS>
    <ANALYSIS>
        <refname>GS130627</refname>
        <accession>EGAR00001446343</accession>
    </ANALYSIS>
    <ANALYSIS>
        <refname>GS130781</refname>
        <accession>EGAR00001446344</accession>
    </ANALYSIS>
    <ANALYSIS>
        <refname>GS130782</refname>
        <accession>EGAR00001446345</accession>
    </ANALYSIS>
    <ANALYSIS>
        <refname>GS130783</refname>
        <accession>EGAR00001446346</accession>
    </ANALYSIS>
    <ANALYSIS>
        <refname>GS130843</refname>
        <accession>EGAR00001446348</accession>
    </ANALYSIS>
<ANALYSIS_SET>

我遇到的问题是我不希望每对都嵌套在ANALYSIS标记中,我希望所有refname - accession对都在一个{ {1}}部分。

0 个答案:

没有答案
相关问题