none
如何将word2007的ooxml格式改成符合自己schema的xml文件??? RRS feed

  • 问题

  • 我现在有一个word2007文件,它上面有我们自己标注的XML标记,内容如下:

    <w:customXml w:uri="http://www.dbw.cn" w:element="书">

    <w:customXml w:uri="http://www.dbw.cn" w:element="序">

    <w:customXml w:uri="http://www.dbw.cn" w:element="主标题">

    <w:p w:rsidR="00584B87" w:rsidRDefault="00BE0B97" w:rsidP="00F1187E">

    <w:pPr>

    <w:jc w:val="center"/>

    <w:rPr>

    <w:color w:val="0070C0"/>

    <w:sz w:val="44"/>

    <w:szCs w:val="44"/>

    </w:rPr>

    </w:pPr>

    <w:r w:rsidRPr="0036778F">

    <w:rPr>

    <w:rFonts w:hint="eastAsia"/>

    <w:color w:val="0070C0"/>

    <w:sz w:val="44"/>

    <w:szCs w:val="44"/>

    </w:rPr>

    <w:t>序一</w:t>

    </w:r>

    </w:p>

    <w:p w:rsidR="0036778F" w:rsidRPr="0036778F" w:rsidRDefault="0036778F" w:rsidP="0036778F">

    <w:pPr>

    <w:jc w:val="center"/>

    <w:rPr>

    <w:color w:val="0070C0"/>

    <w:sz w:val="44"/>

    <w:szCs w:val="44"/>

    </w:rPr>

    </w:pPr>

    </w:p>

    。。。

    我们自己开发一个标准schema文件,内容:

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dbwbook="http://www.dbw.cn" targetNamespace="http://www.dbw.cn" elementFormDefault="qualified">

    <xs:element name="摘要">

    <xs:complexType>

    <xs:sequence>

    <xs:choice minOccurs="0" maxOccurs="unbounded">

    <xs:element ref="dbwbook:主标题"/>

    <xs:element ref="dbwbook:副标题"/>

    <xs:element ref="dbwbook:作者"/>

    </xs:choice>

    <xs:element ref="dbwbook:正文" minOccurs="0"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

    <xs:element name="鸣谢">

    <xs:complexType>

    <xs:sequence>

    <xs:choice minOccurs="0" maxOccurs="unbounded">

    <xs:element ref="dbwbook:主标题"/>

    <xs:element ref="dbwbook:副标题"/>

    <xs:element ref="dbwbook:作者"/>

    </xs:choice>

    <xs:element ref="dbwbook:正文" minOccurs="0"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

    <xs:element name="序">

    <xs:complexType>

    <xs:sequence>

    <xs:choice minOccurs="0" maxOccurs="unbounded">

    <xs:element ref="dbwbook:主标题"/>

    <xs:element ref="dbwbook:副标题"/>

    <xs:element ref="dbwbook:作者"/>

    </xs:choice>

    <xs:element ref="dbwbook:正文" minOccurs="0"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

    。。。

    我们现在想开发一个程序,将word2007文件,转换成一个简单的XML文件,只包含我们自己的标记。

    代码如下:

    public void InitXmlTree(string filename)

            {

                XDocument xdoc = XDocument.Load(filename);

                XElement p1 = (from t in xdoc.Root.Elements(w + "body").Descendants(w + "customXml")

                               where t.Attribute(w + "element").Value == "书"

                               select t).SingleOrDefault();

                addxmlElement(p1);

            }

    void addxmlElement(XElement xelm)

            {

                if (xelm.HasElements)

                {                

                    if (null != xelm.Attribute(w + "element"))

                    {

                        xmltag = xelm.Attribute(w + "element").Value.ToString();

                        this.richTextBox1.Text += "<" + xmltag + ">";

                        this.richTextBox1.Text += "当前级别:" + jb;

                        this.richTextBox1.Text += "\r";

                    }

                    foreach (XElement xx in xelm.Elements())

                    {                    

                        this.addxmlElement(xx);

                    }

                }

                else

                {             

                    if (!xelm.IsEmpty)

                    {

                        this.richTextBox1.Text += xelm.Value;               

                    }

                }

            }

     

    运行程序结果如下:

    <书>

    <序>

    <主标题>

    序一新中国的工业化从这里起步<作者>

    <职务>

    原中央顾问委员会委员、<职务>

    中国企业联合会名誉会长 <姓名>

    袁宝华<正文>

    <段落>

    解放战争时期我曾在黑龙江工作过,解放后,由于做经济工作我多次到黑龙江,对这里的每块土地都有深厚的感情。<段落>

    在地理版图上,黑龙江处于祖国的最北端,这里有广袤肥沃的黑土地、茂密的原始大森林、丰富的矿产资源和热情豪爽的人民。上世纪初,随着中东铁路的修建,这里成为沟通欧亚的重要通道,经济开始繁荣。从抗日战争胜利到新中国的建立和发展,半个多世纪以来,这块土地发生了翻天覆地的变化。今年是建国60周年,新中国工业化也走过了60年,在这辉煌的60年里,黑龙江在新中国工业化进程中发挥了重要作用,作出了重要贡献。<段落>

    <图片>

    <序>

    <主标题>

    序二共和国的工业会铭记<作者>

    <职务>

    中国社会科学院工业经济研究所所长 <姓名>

    金 碚<正文>

    <段落>

    黑龙江省是中国工业的重镇、要地,黑龙江省的经济发展是中国现代工业发展的一个缩影,她不仅是被称为“老工业基地”的重化工业之发轫地,而且经历了新中国工业化进程的苦斗、曲折和辉煌的全部历史,以共和国工业的“脊梁”誉之,确实十分贴切。<段落>

    中国工业化60年的伟大成就,使亿万中国人开始能够享受工业文明越多的福利,但中国13亿人口中还有更大一部分人仍在期待着工业文明的到来,盼望着也能够真正享受现代工业文明的福利。因此,工业化不仅是中国经济社会发展的主题,是最大的民生事业,而且也是具有巨大的人本价值、社会价值和全人类价值的伟大历史进步。历经60年艰难曲折的变革实践,一个13亿人口的超大规模国家在一代人的生命周期中所发生的如此巨大而迅速的变迁,在人类历史上实属罕见,而在这一巨变过程中,凡是具有积极进步意义的变革实践,工业几乎都走在各领域的前列。<段落>

    <图片>

    <段落>

    。。。

     

    现在的问题是:这个XML文件没有结束标记,因为是递归生成,我调试很久也无法在合理的位置加入</xxx>标记,例如</主标题>,</段落>,

    请问大家我的开发思路是否正确,有没有这方面的经验可以给我借鉴一下,万分感谢!!!

    2010年4月9日 1:44

答案