java如何解析缺少一个结束标签的XML文件

xiaoxiong5227 2011-08-10 11:57:34
xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> 
<catalog>
<!--An XML catalog-->
<?target instruction?>
<journal title="XML Zone"
publisher="IBM developerWorks">
<article level="Introductory" date="October-2002">
<title>Create flexible and extensible XML schemas</title>
<author>
<firstname>Ayesha</firstname>
<lastname>Malik</lastname>
</author>
</article>
</journal>


缺少一个</catalog>标签。
...全文
476 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyangjialegeyou 2011-08-18
  • 打赏
  • 举报
回复
请各位高手帮我看看这个问题,c#写的xml无法解析,给各位作揖了
http://topic.csdn.net/u/20110818/21/22129044-e3b6-482f-8342-6b980b1807fe.html?seed=314550918&r=75037547#r_75037547
softroad 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huntor 的回复:]

Java code
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import java.io.FileReader;
import java.io.IOException;

public class XMLExample {
public static void main(final String[] ar……
[/Quote]
记录开始结束标签,那个的次数为奇数就添那个标签。
huntor 2011-08-10
  • 打赏
  • 举报
回复
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import java.io.FileReader;
import java.io.IOException;

public class XMLExample {
public static void main(final String[] args) {
try {
XMLEventReader xer = XMLInputFactory.newFactory().createXMLEventReader(new FileReader("catalog.xml"));
while (xer.hasNext()) {
XMLEvent xe = xer.nextEvent();
if (xe.isStartElement()) {
System.out.println(xe.asStartElement().getName());
continue;
}
if (xe.isEndElement()) {
System.out.println(xe.asEndElement().getName());
}

}
xer.close();
} catch (Exception e) {
System.err.println(e.getClass() + e.getMessage());
}
}
}

catalog
journal
article
title
title
author
firstname
firstname
lastname
lastname
author
article
journal
class javax.xml.stream.XMLStreamExceptionParseError at [row,col]:[15,1]
Message: XML 文档结构必须从头至尾包含在同一个实体内。

xiaoxiong5227 2011-08-10
  • 打赏
  • 举报
回复
有没有稍微智能一点的方法啊。。。
阳明 to life 2011-08-10
  • 打赏
  • 举报
回复
人工字符串解析
飞跃颠峰 2011-08-10
  • 打赏
  • 举报
回复
如果你确定只是少最后一个结束标签,在解析前你自己把它补上
huntor 2011-08-10
  • 打赏
  • 举报
回复
一个 unwell-formed 的文档不是 xml。
你还是去把生成这段文字的人
huntor 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiaoxiong5227 的回复:]

这是java和c++混合编程的一个东西。
要从C++端传送数据流,在某些情况下面会漏掉最后一个标签。在java端要进行判断,并修复。然后再解析
[/Quote]
数据流传到一个字符串,判断是否 endsWith("</catalog>"), 不是的话就是加上。
然后 构造一个 StringReader。一般的 xml解析都支持从 reader读入。
xiaoxiong5227 2011-08-10
  • 打赏
  • 举报
回复
有没有什么办法将一个xml文件,一部分一部分读入,不产生错误
xiaoxiong5227 2011-08-10
  • 打赏
  • 举报
回复
这是java和c++混合编程的一个东西。
要从C++端传送数据流,在某些情况下面会漏掉最后一个标签。在java端要进行判断,并修复。然后再解析
9441 2011-08-10
  • 打赏
  • 举报
回复
你还是看看什么叫XML文件吧

XML必须是合规的,你这个不叫XML文件

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧