readLine() 引起 XML 无法解析

2024-01-23 02:38

本文主要是介绍readLine() 引起 XML 无法解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

报错:
org.xml.sax.SAXParseException: name expected (position:START_TAG rootxmlns:dlna@1:54 in java.io.InputStreamReader@7c28415)

String surl = "http://192.168.2.101:1068/description.xml";
URL url = new URL(surl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream IS = conn.getInputStream();
InputStreamReader ISR = new InputStreamReader(IS);
BufferedReader BR = new BufferedReader(ISR);
String inputLine;
while ((inputLine = BR.readLine()) != null) {responseData += inputLine;
}
Log.e(Thread.currentThread().getStackTrace()[2] + "", "responseText:\n" + responseData);
DocumentBuilderFactory DBF = DocumentBuilderFactory.newInstance();
DocumentBuilder DB = DBF.newDocumentBuilder();
Document doc = DB.parse(new ByteArrayInputStream(responseData.getBytes()));

Notepad++ 查看原文,视图 - 显示符号 - 显示所有字符,可以看到 <root 后面不是一个空格,而是一个换行符!

我得到的响应一个换行都没有:

<?xml version="1.0" encoding="UTF-8"?><rootxmlns:dlna="urn:schemas-dlna-org:device-1-0"xmlns="urn:schemas-upnp-org:device-1-0"><specVersion>    <major>1</major>    <minor>0</minor></specVersion><device>    <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>    <UDN>uuid:87619d57-abd7-4271-b372-e139fb094dde</UDN>    <friendlyName>Macast(WIN-NMPIENTL4TM)</friendlyName>    <manufacturer>xfangfang</manufacturer>    <manufacturerURL>https://github.com/xfangfang</manufacturerURL>    <modelDescription>AVTransport Media Renderer</modelDescription>    <modelName>Macast</modelName>    <modelNumber>0.64</modelNumber>    <modelURL>https://xfangfang.github.io/Macast</modelURL>    <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>    <serviceList>        <service>            <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>            <serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>            <controlURL>AVTransport/action</controlURL>            <eventSubURL>AVTransport/event</eventSubURL>            <SCPDURL>dlna/AVTransport.xml</SCPDURL>        </service>        <service>            <serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>            <serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>            <controlURL>RenderingControl/action</controlURL>            <eventSubURL>RenderingControl/event</eventSubURL>            <SCPDURL>dlna/RenderingControl.xml</SCPDURL>        </service>        <service>            <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>            <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>            <controlURL>ConnectionManager/action</controlURL>            <eventSubURL>ConnectionManager/event</eventSubURL>            <SCPDURL>dlna/ConnectionManager.xml</SCPDURL>        </service>    </serviceList></device></root>

联系软件作者拒绝修改,这怎么办呢?

正当我想用 responseData.replace("<rootxmlns:", "<root xmlns:") 的时候,突然想到或许 readLine() 是用换行符分割的,分割后换行符丢失了,我补上换行符不就可以了!

responseData += inputLine;

改成

responseData += inputLine + "\n";

卡了我几个小时的问题解决!

这篇关于readLine() 引起 XML 无法解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634988

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧