我在解析包含Unicode和拉丁字符作为XML数据一部分的XML数据时遇到了问题。 它抛出一个错误,说无法解析输入的XML数据。 请找到附带的代码段,并尽力解决问题。
这是我们在应用程序中传递它的输入
String url = "<?xml version='1.0' encoding='UTF-8'?><candidate-registrations customer-id='197'>
<registration-details method=' '>
<candidate-demographics>
<candidate-details>
<candidate-id-type value='SSN'/>
<candidate-id value='567876456'/>
<first-name value='ยง'/>
<last-name value='mohan'/>
<date-of-birth value='03/03/1980'/>
<email-address value='jagannatha.venkataravanappa@harman.com'/>
<school-code>0129</school-code>
</candidate-details>
</candidate-demographics>
</registration-details></candidate-registrations>";
这是我们正在使用的代码
private XMLReader xr;
public SaxMapper( )
{
try
{
// Create the XML reader...
xr = XMLReaderFactory.createXMLReader();
}
catch(Exception e)
{
LoggerManager.Log(LogLevelConstants.INFO, className, "SaxMapper", e.getMessage(),e);
}
}
public Object fromXML( String url )
{
try
{
return fromXML( new InputSource( url ));
}
catch ( Exception e )
{
LoggerManager.Log(LogLevelConstants.INFO, className, "fromXML", e.getMessage(),e);
return null;
}
}
private synchronized Object fromXML( InputSource in ) throws Exception
{
// Set the ContentHandler...
xr.setContentHandler( this );
// Parse the file...
xr.parse( in );
return getMappedObject();
}
这是我得到的错误,
Error : <?xml version="1.0" encoding="UTF-8"?><import-results><result>BAD</result><reason-code>100</reason-code><reason-desc>Unable to parse the input XML</reason-desc><error>Unable to parse the input XML</error></import-results>
答案 0 :(得分:0)
如果您阅读documentation on InputSource,您会注意到
new InputSource(String)
做了与你期望的不同的事情。
要使用sax解析字符串,请参阅:https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html
请注意,给定的教程侧重于解析文件而不是给定的字符串。但是在你理解了它之后,很容易改变它。