java - XML sax 解析异常。无效内容错误

标签 java xml web-services xml-parsing

这是我的 Xml

  <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
           xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
           xmlns:ch="http://abc.def.com/admin/find/types/v1" 
           targetNamespace="http://abc.def.com/admin/find/types/v1"
         elementFormDefault="qualified" >

         <import namespace="http://esi.osm.com/commonheader/v3" schemaLocation="CommonHeaderV3_3.xsd" />
    ...  
        <xsd:complexType name="SystemConfig">
            <xsd:sequence>
                <element name="System"      type="xsd:int"        minOccurs="1" />
                <element name="NetworkType" type="ch:NetworkType" minOccurs="1" />
                <element name="Location"    type="xsd:string"     minOccurs="0" />
                <element name="Address"     type="xsd:string"     minOccurs="0" />
                <element name="City"        type="xsd:string"     minOccurs="0" />
            </xsd:sequence>
          </xsd:complexType>

       <simpleType name="NetworkType" >
            <restriction base="string">
                <enumeration value="CABLE" />
                <enumeration value="DSL" />
            </restriction>
       </simpleType>

当我尝试运行我的网络服务时遇到的错误是这样的..

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'ns3:Location'. One of '{"http://abc.def.com/admin/find/types/v1":NetworkType}' is expected.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)

编辑: Java代码

    NetworkType networkType= null;
        if(db.getNetworkType().equals("cable")) {
            networkType= NetworkType.fromValue("CABLE");
        } 
        if (db.getNetworkType().equals("dsl")) {
            networkType = NetworkType.fromValue("DSL");
        } 
   ntList.setNetworkType(networkType);
   log.info(networkType); //prints null....

为networkType打印的值是空的,但实际上我能够获取数据库值 实际上我发现了问题......数据库中包含空格,因此传递的值并不完全正确。 添加trim()后运行良好

最佳答案

在没有看到您的 XML 的情况下,仅从错误消息就可以清楚地看出解析器遇到了 ns3:Location 元素,意识到前面的必需 ch:未找到 NetworkType 元素,并提示该遗漏。我们可以看出 ch:NetworkType 是必需的,因为您的 XSD 片段在 ch:NetworkType 的内容模型中具有 minOccurs="1" 系统配置

关于java - XML sax 解析异常。无效内容错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340558/

相关文章:

java - JSF 2.0。无法在 preRenderView 事件处理程序中获取 POST 参数和 cookie

c# - 获取整个 XML 节点及其在字符串中的标记

java - 如果使用 REST API 登录,如何在页面请求中授权用户?

java - 加密Java代码转Go代码

java - 等待两分钟调用一个方法

Java 匈牙利数字格式和 Linux 文件系统

c# - C#XML根据属性获取节点

c# - 在 XDocument 中查找元素?

java - 如何将 Eclipse 插件公开为 Web 服务?

c++ - Qt 从 SoapRequest 获取响应