验证 xml 时出现"The markup in the document preceding the root element must be well-formed"错误



我对xml很陌生,所以请原谅我的愚蠢问题。我有这样一个schema

 <?xml version="1.0" encoding="UTF-8" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">
 <xs:element name="Product">
   <xs:complexType>
     <xs:sequence>
        <xs:element name= "name" type = "xs:string"/>
        <xs:element name= "price" type = "xs:decimal"/>
        <xs:element name= "Fish">
             <xs:complexType>
                <xs:sequence>
                    <xs:element name= "Type">
                        <xs:simpleType>
                            <xs:restriction base="xs:string">
                                <xs:enumeration value="herbivourus"/>
                                <xs:enumeration value="predator"/>
                                <xs:enumeration value="detritophages"/>
                                <xs:enumeration value="omnivourus"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="Clown">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                                <xs:element name="Character" >
                                    <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                            <xs:enumeration value="Slow"/>
                                            <xs:enumeration value="Quiet"/>
                                            <xs:enumeration value="Fearful"/>
                                            <xs:enumeration value="Motile"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:element>
                                <xs:element name="Agressiveness">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                            <xs:enumeration value="HIGH"/>
                                            <xs:enumeration value="MEDIUM"/>
                                            <xs:enumeration value="LOW"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:element>
                               <xs:element name="gotSpikes" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                     <xs:element name="Lionfish">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                               <xs:element name="gotSpikes" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                      <xs:element name="Triggerfish">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                               <xs:element name="needsHideout" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                      <xs:element name="Trumpetfish">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                               <xs:element name="gregarious" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                      <xs:element name="Yellow_boxfish">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                               <xs:element name="gregarious" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="reptile">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="compatibleWithFish" type= "xs:boolean"/>
                    <xs:element name="needsLand" type= "xs:boolean"/>
                    <xs:element name="turtle">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                               <xs:element name="gregarious" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>  
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="decoration">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="size" type= "xs:int"/>
                    <xs:element name="alga">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                                <xs:element name="doesGetsOxygen" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>  
                     <xs:element name="castle">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="serialVersionUID" type="xs:long"/>
                                <xs:element name="isHideOut" type="xs:boolean"/>
                            </xs:sequence>
                        </xs:complexType>
                     </xs:element>  
                </xs:sequence>
            </xs:complexType>
        </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>
 </xs:schema>

这里是我的XML

<?xml version="1.0" encoding="UTF-8"?>
    xsi:schemaLocation="tank.xsd">
    <Product>
    <<Fish>
            <Clown name = "Clown">
                <serialVersionUID>
                    -7114819146190513293L
                </serialVersionUID>
                <Character>QUIET</Character>
                <Aggressiveness>LOW</Aggressiveness>
                <gotSpikes>false</gotSpikes>
                <type> herbivourus</type>
                <price> 51000 </price>
            </Clown>
            <Lionfish>
                <serialVersionUID>
                    5302423581237004299L
                </serialVersionUID>
                <price>25000</price>
                <name> Lionfish </name>
                <type> herbivourus</type>
                <gotSpikes>true</gotSpikes>
            </Lionfish>
            <Triggerfish>
                <serialVersionUID>
                    4102072582518577014L
                </serialVersionUID>
                <price>27000</price>
                <name> Triggerfish </name>
                <type> herbivourus</type>
                <needsHideout>true</needsHideout>
            </Triggerfish>
            <Trumpetfish>
                <serialVersionUID>
                     -6802935171639886135L
                </serialVersionUID>
                <price>34500</price>
                <name> Trumpetfish </name>
                <type> herbivourus</type>
                <gregarious> true</gregarious>
            </Trumpetfish>
            <Yellow_boxfish>
                <serialVersionUID>
                     4377441012026861992L
                </serialVersionUID>
                <price>56900</price>
                <name> Yellow_boxfish </name>
                <type> herbivourus</type>
                <gregarious> true</gregarious>
            </Yellow_boxfish>
    </Fish>
    <Reptile>
            <Turtle>
                <serialVersionUID>
                    -3606085842515781016L
                </serialVersionUID>
                <price>129000</price>
                <name> Turtle </name>
                <compatibleWithFish> true</compatibleWithFish>
                <needsLand>true</needsLand>
                <gregarious> true </gregarious>
            </Turtle>
    </Reptile>
    <Decoration>
            <Alga>
                <serialVersionUID>
                    -4311096533955485410L
                </serialVersionUID>
                <price>15000</price>
                <name> alga </name>
                <doesGetOxygen> true</doesGetOxygen>
            </Alga>
            <Castle>
                <serialVersionUID>
                    1L
                </serialVersionUID>
                <price>110300</price>
                <name> Castle </name>
                <ishideout> true</ishideout>
            </Castle>
    </Decoration>
</Product>

顺便说一下,我有这样一个类层次

  • 抽象的产品
    • 抽象的鱼
      • 狮子鱼
      • 引金鱼
      • Trumpetfish
      • Yellow_boxfish
    • 抽象的爬行动物
        乌龟
    • 抽象的装饰
      • 海藻
      • Calstle验证器的输出是"文档中根元素前面的标记必须是格式良好的"。所以请告诉我哪里出错了

注:我需要在xsd显示类的层次结构,基类是产品类和所有的孩子将有一个字段名和价格,所以我不确定它是否正确显示在我的模式:C和顺便说一下,然后我要实例化这些类

因为你没有正确配置你的根元素所以正确的配置很重要所以

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<root>
  Paste your code here
</root>

所以按照这个例子中的建议粘贴你的代码。所以把你的代码粘贴到根子句中。然后错误将被短路

相关内容

最新更新