无法使用XMLReader.parse()解析拉丁和unicode字符

时间:2017-02-27 09:55:54

标签: java unicode xml-parsing

我在解析包含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>

1 个答案:

答案 0 :(得分:0)

如果您阅读documentation on InputSource,您会注意到

new InputSource(String)

做了与你期望的不同的事情。

要使用sax解析字符串,请参阅:https://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html

请注意,给定的教程侧重于解析文件而不是给定的字符串。但是在你理解了它之后,很容易改变它。