parsing error in mapper xml file when using < sign in the sql query

1,089 views
Skip to first unread message

mmg

unread,
Mar 22, 2012, 5:03:53 PM3/22/12
to mybatis-user
I get the following error when using less than sign in the sql query

Gives Parsing error:
<select id="getAuditDevice" parameterType="int"
resultMap="deviceResultMap">
select *
from DEVICE
where current_service_id < 18 AND device_id =
#{deviceId,jdbcType=BIGINT}
</select>
No error for:

<select id="getAuditDevice" parameterType="int"
resultMap="deviceResultMap">
select *
from DEVICE
where 18 > current_service_id AND device_id =
#{deviceId,jdbcType=BIGINT}
</select>

Is this a know defect?

-----
2012-03-22 18:01:02,529 [main] ERROR
org.mybatis.spring.mapper.MapperFactoryBean - Error while adding the
mapper 'interface
com.ca.spna.soa.common.persistence.core.AuditDeviceMapper' to
configuration.
org.apache.ibatis.builder.BuilderException: Error creating document
instance. Cause: org.xml.sax.SAXParseException: The content of
elements must consist of well-formed character data or markup.
at
org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:
238)
at
org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:107)
at
org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:
61)
at
org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:
56)
at
org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.loadXmlResource(MapperAnnotationBuilder.java:
118)
at
org.apache.ibatis.builder.annotation.MapperAnnotationBuilder.parse(MapperAnnotationBuilder.java:
92)
at
org.apache.ibatis.binding.MapperRegistry.addMapper(MapperRegistry.java:
45)
at
org.apache.ibatis.session.Configuration.addMapper(Configuration.java:
463)
at
org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:
78)
at
org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:
44)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:
1477)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:
1417)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
519)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
456)
at
org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:
288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getTypeForFactoryBean(AbstractBeanFactory.java:
1343)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:
678)
at
org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:
507)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:
317)
at
org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:
185)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:
829)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:
786)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:
703)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:
474)
at
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:
84)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:
282)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:
1074)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
517)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
456)
at
org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:
288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:
190)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:
580)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:
895)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
425)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:
139)
at
org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:
83)
at
com.ca.spna.deviceaudit.client.DeviceAuditClient.<init>(DeviceAuditClient.java:
32)
at
com.ca.spna.deviceaudit.client.DeviceAuditClient.main(DeviceAuditClient.java:
50)
Caused by: org.xml.sax.SAXParseException: The content of elements must
consist of well-formed character data or markup.
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDriver.startOfMarkup(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDriver.next(Unknown Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown
Source)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown
Source)
at
com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown
Source)
at
org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:
236)
... 41 more

Eduardo Macarron

unread,
Mar 25, 2012, 3:48:05 PM3/25/12
to mybati...@googlegroups.com
Seems the XML is syntactically wrong, check the syntax. If you are
using windows open it with internet explorer for example.

ocon...@yahoo.com

unread,
Mar 25, 2012, 4:44:32 PM3/25/12
to mybati...@googlegroups.com
I'm surprised that either of them works with the < or > character.  Try wrapping the contents of the element in cdata.

Sent from my HTC on the Now Network from Sprint!

Andrew Shalin

unread,
Mar 26, 2012, 1:34:57 AM3/26/12
to mybati...@googlegroups.com
It's not a defect at all. You shouldn't use "<" and "&" in xml data according to xml syntax. Xml parser thinks that some new tag is opened when it see "<". So you should replace "<" with "&lt;" or enclose all xml node text in <![CDATA[ ... ]]>.

пятница, 23 марта 2012 г. 1:03:53 UTC+4 пользователь mmg написал:
Reply all
Reply to author
Forward
0 new messages