急!在JAVA中写XML文件时遇到的怪问题
请教大家一个问题,root 是我的一个DOM的根节点,我可以对它进行任何操作,但是我在进行root.toString()时却出错
输出[Senxin: null](Senxin是我的XML文件根元素的名称),这个程序正常运行了大半个月,前几天突然出现这样
的问题,这样我对XML文件所有进行的写操作都不能进行(以前可以的),大家有没有碰到过,帮我想想看.
问题点数:0、回复次数:9Top
1 楼Kyle_Chen()回复于 2003-09-04 20:37:42 得分 0
是否可能是encoding的问题,比如中文?Top
2 楼towzy(晚枫)回复于 2003-09-04 20:47:00 得分 0
XML的解析器有很多版本,不知道你用的是哪个?
有
org.jdom.*
org.w3c.dom.*
javax.xml.parsers.*Top
3 楼moonpiazza(月光易水)回复于 2003-09-05 09:59:45 得分 0
xml数据问题?
得到根节点为空,检查xml文件是否有效
:_)Top
4 楼binzhi()回复于 2003-09-05 14:55:51 得分 0
XML文件肯定有效的
我用的是org.w3c.dom.*
那么大家是用什么方法将修改后的XML文件保存到硬盘的
谢谢Top
5 楼towzy(晚枫)回复于 2003-09-05 19:03:49 得分 0
不能直接用root.toString()方法的,这个方法不是想象的那样,得到XML文件,它好想是将文件里的元素、属性按照一定的规则列出来;Top
6 楼towzy(晚枫)回复于 2003-09-05 19:24:12 得分 0
有个方法你可以试试:[要用到jdom.jar]
public String getXmlAsString() throws java.io.UnsupportedEncodingException
{
org.jdom.input.DOMBuilder domBuild = new org.jdom.input.DOMBuilder();
org.jdom.Document root = domBuild.build(org.w3c.dom.Document domDocument[这里传入你现有的文档根]);
org.jdom.output.XMLOutputter OutPuter = new org.jdom.output.XMLOutputter(" ", true, "gb2312");
byte[] b;
try
{
b = ((String)OutPuter.outputString(root)).getBytes("gb2312");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return ( new String(b,"ISO8859-1") );
}
我加入了编码转换,否则好像不能解析中文。Top
7 楼binzhi()回复于 2003-09-06 09:15:58 得分 0
请问towzy(晚枫)
org.jdom.Document root = domBuild.build(org.w3c.dom.Document domDocument[这里传入你现有的文档根]);
这句话应该怎么用啊!是这样吗
org.jdom.Document root = domBuild.build(root)
可domBuild.build要求的参数是org.jdom.Element或org.jdom.Document 可我只有org.w3c.dom.Element和org.w3c.dom.Document 我该怎么办
谢谢!
Top
8 楼towzy(晚枫)回复于 2003-09-15 20:30:45 得分 0
上面的那句话就是用来转换的,你没看到参数吗?
进去是org.w3c.dom.Document类型的
经过domBuild.build后,出来是org.jdom.Document 类型啊!
你下面的调用是对的,但是你不能再定义相同的root节点了:
org.jdom.Document root = domBuild.build(root);
可以这样
org.jdom.Document root2 = domBuild.build(root);
Top
9 楼towzy(晚枫)回复于 2003-09-15 20:32:29 得分 0
再提示:jdom的domBuild.build中提供了很多构造函数,并不局限在“要求的参数是org.jdom.Element或org.jdom.Document”Top




