解析xml时,报错:WARN/System.err(207): org.apache.harmony.xml.ExpatParser$ParseException: At line 1,

本文记录了一次使用SAX解析XML文件过程中遇到的问题及解决办法。作者跟随mars老师的教程实现了一个MP3播放器中的XML解析功能,但在运行时遇到了解析失败的错误。经过排查,发现问题是由于服务器上的XML文件存在定义错误导致。

最近两天看mars老师的mp3播放器,一步一步跟着老师敲的代码,结果运行起来,解析xml时总是报错

	private List<Mp3Info> parseXML(String xmlStr){
		SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
		List<Mp3Info> infos = new ArrayList<Mp3Info>();
		try{
			XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader();
			Mp3ContentHandler mp3ListContentHandler = new Mp3ContentHandler(infos);
			xmlReader.setContentHandler(mp3ListContentHandler);
			xmlReader.parse(new InputSource(new StringReader(xmlStr)));
			for (Iterator<Mp3Info> iterator = infos.iterator(); iterator.hasNext();) {
				Mp3Info mp3Info = (Mp3Info) iterator.next();
				System.out.println(mp3Info);
			}
		}
		catch(Exception e){
			e.printStackTrace();
		}
		return infos;
	}
这个方法是对下载的xml文件的简析

但是这句xmlReader.parse(new InputSource(new StringReader(xmlStr)));执行不了


String xml = downloadXML("http://192.168.136.125:8080/mp3/resouces.xml");
			System.out.println(xml);
			parseXML(xml);

这段代码是调用上面的方法
System.out.println(xml);
这个可以输出得到的xml文本
xmlReader.parse(new InputSource(new StringReader(xmlStr)));就这句执行了不了

折腾了好长时间,都快怒砸本了!!

无奈中查看了一下服务器中的xml文件,发现xml的定义中有个下错误

  希望碰到此类问题的朋友能早点解决

<think>嗯,用户的问题是关于log4j 1.2在没有配置的警告信息以及如何解决。首先,我需要回忆一下log4j 1.2的相关知识。记得当log4j没有找到配置文件,它会使用默认配置,通常是ConsoleAppender和BasicLayout,但可能会输出警告信息,比如“log4j:WARN No appenders could be found for logger”之类的。这可能是因为配置文件的名称或位置不正确,或者根本没有配置文件。 接下来,解决这个问题的方法可能有几种。首先,检查配置文件的名称是否正确,log4j 1.2默认会查找名为log4j.properties或log4j.xml的文件。然后,确保配置文件放在类路径下,比如src目录或者资源目录里。如果用户不想配置,可以手动在代码中初始化配置,添加ConsoleAppender之类的。或者,升级到log4j 2.x版本,因为log4j 1.x已经停止维护了,但用户可能因为兼容性问题还在用旧版。 另外,用户提供的引用里提到了log4cplus的隐式初始化和log file sync的问题,可能和日志系统的初始化有关,但需要确认是否与log4j相关。不过主要的解决方法还是围绕正确配置文件和代码初始化展开。需要确保回答结构清晰,步骤详细,并给出示例代码,比如如何添加BasicConfigurator。还要生成相关问题,比如禁用警告的方法,不同配置方式的区别,兼容性问题等。</think>关于Log4j 1.2未配置警告的解决方案如下: ### 问题现象 当使用Log4j 1.2未配置,控制台会输出警告: ``` log4j:WARN No appenders could be found for logger (com.example.ClassName) log4j:WARN Please initialize the log4j system properly ``` 这是由于日志系统未找到配置文件的默认行为[^1]。 ### 解决方法 #### 方法一:添加配置文件 1. 在类路径下创建`log4j.properties`文件 2. 配置基础日志输出: ```properties log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n ``` #### 方法二:代码初始化配置 在程序启动添加: ```java import org.apache.log4j.BasicConfigurator; public class Main { static { BasicConfigurator.configure(); // 初始化基础配置 } } ``` #### 方法三:禁用警告(不推荐) 通过系统参数关闭日志初始化检查: ```java System.setProperty("log4j.defaultInitOverride", "true"); ``` ### 注意事项 1. 配置文件必须命名为`log4j.properties`或`log4j.xml` 2. 文件应放置在`src/main/resources`或类路径根目录 3. Log4j 1.x已停止维护,建议升级到Log4j 2.x[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值