Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XMLPullParser解析程序未能解析“0”;(??????)[??]&;米德多&引用;内部xml标记_Java_Exception_Xml Parsing - Fatal编程技术网

Java XMLPullParser解析程序未能解析“0”;(??????)[??]&;米德多&引用;内部xml标记

Java XMLPullParser解析程序未能解析“0”;(??????)[??]&;米德多&引用;内部xml标记,java,exception,xml-parsing,Java,Exception,Xml Parsing,我正在用Jsoup解析下面的XMLPullParser <title>(??????) [????]0 BLACK LAGOON -???? &middot; ????- ?01-09?</title> <guid isPermaLink='true'>http://fenopy.eu/torrent/+black+lagoon+A+01+09+/OTcyOTA3Mw</guid> <pubDate&g

我正在用Jsoup解析下面的XMLPullParser

<title>(??????) [????]0 BLACK LAGOON -???? &middot; ????- ?01-09?</title>
        <guid isPermaLink='true'>http://fenopy.eu/torrent/+black+lagoon+A+01+09+/OTcyOTA3Mw</guid>
        <pubDate>Wed, 27 Feb 2013 11:00:04 GMT</pubDate>
        <category>Anime</category>
        <link>http://fenopy.eu/torrent/+black+lagoon+A+01+09+/OTcyOTA3Mw</link>
        <enclosure url="http://fenopy.eu/torrent/-BLACK-LAGOON-01-09-/OTcyOTA3Mw==/download.torrent" length="569296173" type="application/x-bittorrent" />
        <description><![CDATA[ Category: Anime<br/>Size: 542.9 MB<br/>Ratio: 0 seeds, 3 leechers<br/> ]]></description>
        </item>
当我调用下一个文本时,它抛出以下异常

org.xmlpull.v1.XmlPullParserException: unresolved: &middot; (position:TEXT (??????) [????] ...@36:59 in java.io.StringReader@40540698) 
at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273)
at org.kxml2.io.KXmlParser.error(KXmlParser.java:269)
at org.kxml2.io.KXmlParser.pushEntity(KXmlParser.java:818)
at org.kxml2.io.KXmlParser.pushText(KXmlParser.java:849)
at org.kxml2.io.KXmlParser.nextImpl(KXmlParser.java:354)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:1378)
at org.kxml2.io.KXmlParser.nextText(KXmlParser.java:1432)

您的xml无效<代码>·是无效的xml引用

XML中有5个预定义的实体引用:

<小于

>大于

&&符号与

&apos'撇号

”引号

已更新

简单使用正则表达式替换XML中的所有HTML字符

XMLString.replaceAll("(&[^\\s]+?;)", ""));
这将取代
·按“”

也许您可以:

parser.setInput(...);
parser.defineEntityReplacementText("middot", "•");

因为这不适用于您的实现:

从apache commons lang使用HTML转换,因为它似乎是HTML命名的实体:

String xml = "<foo>Hello &middot; World!</foo>";
xml = StringEscapeUtils.unescapeHtml(xml);
String xml=“Hello·;World!”;
xml=StringEscapeUtils.unescapethtml(xml);

评论的问题:

取代所有不分青红皂白的:

String xml = "<...";

// Place all entities like "&middot;" in square brackets: "[middot]":
xml = xml.replaceAll("\\&(\\w+);", "[$1]");

// But not for the xml entities:
xml = xml.replaceAll("\\[(lt|gt|amp|quot|apos)\\]", "&$1;");

String xml=“我正在处理同样的问题,我找到了超级简单的解决方案:

xmlPullParser.setFeature(Xml.FEATURE_RELAXED, true);

我是在设置输入后这样做的,但这没有效果。您知道如何设置XmlPullParser.FEATURE\u PROCESS\u DOCDECL,以便它不会对这些元素引发异常…抱歉,不。您正在考虑在setInput之前先加前缀
?可能在setInput之前(我的实现不是这样)?我想从XML中删除所有无效字符。是否有任何正则表达式或库可以这样做..因为我想删除所有字符。是的,但是XML中有这么多无效字符。那么有什么事情应该自动执行吗…比如设置一些功能XmlPullParser.feature\u PROCESS\u DOCDECL你知道吗?很抱歉,这些引用超出了xml规范,它们来自html规范。正如我所看到的,您的文件混合了xml和html。有一个方法defineEntityReplacementText可以定义实体引用的替换,但您应该定义您拥有的每个引用。有一个html实体列表,您能为我编写一个正则表达式吗移动所有以&开头并以;?结尾的单词?有类似的问题,可能是您可以使用该解决方案?或者您可以使用apache commons lang library。方法StringEscapeUtils.unescapeHtml4将实体引用转换为unicode字符,但您应该注意编码。需要明确的是:导入android.util.Xml;…XmlPullParserparser=factory.newPullParser();parser.setFeature(Xml.FEATURE,true);
xmlPullParser.setFeature(Xml.FEATURE_RELAXED, true);