如何删除重复的XML声明

时间:2015-06-18 01:44:16

标签: java xml xsd jersey jersey-client

我通过Jersey客户端

收到以下XML响应
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><aaa><bbb key="Data"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<my-data xsi:noNamespaceSchemaLocation="MyData.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <data name="abc" uniqueId="4fe95637-a381-4e0c-bf7f-49f794df5f23">
        <variable var1="xyz" value="44"/>        
    </data>    
</my-data>
</bbb></aaa>

我将此保存为XML文件,并提前过早结束文件&#39;解析期间出错,因为XML格式不正确(重复的XML声明)...有没有办法从输出中删除以下重复条目?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

以下是我的Java代码段:

 String output = response.getEntity(String.class); 
 file = writeResponseToFile(output,"MyData.xml");
 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 dbf.setNamespaceAware(true);       
 DocumentBuilder db = dbf.newDocumentBuilder();
 Document document = db.parse(file);    //Error

2 个答案:

答案 0 :(得分:2)

理想情况下,您应该在源头修复问题。你收到的不是XML,因为有多个XML声明违反了XML的基本语法,使数据格式不正确。

如果无法在源处正确修复问题,并且您希望尝试修复,则必须将该数据视为文本而不是XML,直到您删除额外的XML声明(通过文本级操作,而不是XML解析)。

答案 1 :(得分:0)

修复您收到的xml。您在xml中收到两个声明。

xml格式错误。请记住,在Jersey中,您可以使用@Produces通过注释接收JSON,xml,html等文件。

请记住,您在互联网上有xml验证器,以验证您的xml。

问候。