java - 如何删除重复的 XML 声明

标签 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 文件,并在解析过程中收到“文件过早结束”错误,因为 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

最佳答案

理想情况下,您应该从源头上解决问题。您收到的不是 XML,因为有多个 XML 声明违反了 XML 的基本语法,导致数据格式不正确。

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

关于java - 如何删除重复的 XML 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905184/

相关文章:

java - 如何从 java 程序中调用 bat

java - Java 电子邮件验证中的编译器错误

java - org.apache.pdfbox.examples.signature.CreateVisableSignature 抛出 null 异常

android - EditText 填充不起作用

xml - 架构中的内容模型不明确

java - 如何在 List<TextView> android 中查找字符串

android - 使用 dom 和特殊字符解析 XML

python - 解析根元素内元素之间的 XML 文本

c# - "The ' http ://www. w3.org/XML/1998/namespace:lang ' attribute is not declared."

xsd - XML 模式中的订单定义