【问题标题】:codesynthesis not parsing my xml file代码合成没有解析我的 xml 文件
【发布时间】:2013-09-12 02:27:03
【问题描述】:

我正在使用代码合成来生成代表我的 xsd 文件的类。 xml 文件已使用在线验证程序针对模式文件进行了验证,看起来没问题。但是,在运行我的程序时,该程序仅读取 xml 并尝试创建表示 xml 文件的结构,我得到每个元素的异常,例如:错误:未为元素 'quantoptions' 声明属性 'dburl',错误:未找到声明元素“选项”和错误:未找到元素“符号”的声明。有人可以告知为什么会这样吗?

这是 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Document created with online XML Editor http://xmlgrid.net 2013/09/08 2:17:41  -->
   <quantoptions dburl="test attribute">
         <option>
               <symbol>test string</symbol>
               <dateselection enddate="2002-09-24" startdate="2002-09-24"></dateselection>
         </option>
         <option>
               <symbol>test string</symbol>
               <dateselection enddate="2002-09-24" startdate="2002-09-24"></dateselection>
               <blackscholes>false</blackscholes>
               <volatility>true</volatility>
         </option>
   </quantoptions>

这是 xsd 文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:element name="quantoptions">
                                <xs:complexType>
                                                <xs:sequence>
                                                                <xs:element maxOccurs="unbounded" minOccurs="1" name="option">
                                                                            <xs:complexType>
                                                                                                <xs:sequence maxOccurs="1" minOccurs="1">
                                                                                                                <xs:element maxOccurs="1" minOccurs="1" name="symbol" type="xs:string"/>
                                                                                                            <xs:element maxOccurs="1" minOccurs="1" name="dateselection">
                                                                                                                            <xs:complexType>
                                                                                                                                            <xs:attribute name="enddate" type="xs:date" use="required"/>
                                                                                                                                            <xs:attribute name="startdate" type="xs:date" use="required"/>
                                                                                                                            </xs:complexType>
                                                                                                            </xs:element>
                                                                                                            <xs:choice maxOccurs="unbounded" minOccurs="0">
                                                                                                                            <xs:element maxOccurs="1" minOccurs="1" name="blackscholes" type="xs:boolean"/>
                                                                                                                            <xs:element maxOccurs="1" minOccurs="1" name="volatility" type="xs:boolean"/>
                                                                                                            </xs:choice>
                                                                                            </xs:sequence>
                                                                            </xs:complexType>
                                                            </xs:element>
                                            </xs:sequence>
                                            <xs:attribute name="dburl" type="xs:string" use="required"/>
                            </xs:complexType>
            </xs:element>

最后是代码,在这一行抛出异常:std::auto_ptr optionConfig (quantoptions_ (configPath));

    const std::string configPath  = "../config/quantoptions.xml";
    std::auto_ptr<quantoptions> optionConfig (quantoptions_ (configPath));

    optionConfig->dburl();

    for(quantoptions::option_const_iterator i (optionConfig->option().begin()); i != optionConfig->option().end(); ++i)
    {
        std::cout<< i->symbol();
    }

提前致谢

【问题讨论】:

  • 架构没有结尾“”。我猜想将架构复制并粘贴到 stackoverflow 中失败了。

标签: c++ xml xml-parsing xsd xerces


【解决方案1】:

终于解决了这个问题,我不确定这是否已记录在案,但尽管 xml 格式正确,但代码合成正在 xml 中寻找以下行:。所以工作的 xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Document created with online XML Editor http://xmlgrid.net 2013/09/08 2:17:41  -->
   <quantoptions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd" dburl="test attribute">
         <option>
               <symbol>test string</symbol>
               <dateselection enddate="2002-09-24" startdate="2002-09-24"></dateselection>
         </option>
         <option>
               <symbol>test string</symbol>
               <dateselection enddate="2002-09-24" startdate="2002-09-24"></dateselection>
               <blackscholes>false</blackscholes>
               <volatility>true</volatility>
         </option>
   </quantoptions>

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多