我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下相关的知识,希望对你有一定的参考价值。

原代码如下:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import java.io.*;
import java.io.IOException;

public class HostIP
public void changeXML()
String Hostip = "192.168.0.1";
// 创建一个document对象
Document document = DocumentHelper.createDocument();
// 创建根节点元素
Element HostIPElement = document.addElement("HostIP");
HostIPElement.setText(Hostip);
try
// 创建一个xml写入流,将生成的xml文件写入指定的文件中
//紧凑方式写入format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter output = new XMLWriter(
new FileWriter(new File("HostIP.xml")), format);

output.write(document);
output.close();

catch (IOException e)
System.out.println(e.getMessage());


参考技术A public class HostIP

private static void changeXML(String location)

String hostip = "192.168.0.1";
//创建docunment对象
Document document = DocumentHelper.createDocument();
//创建根节点
Element hostIPElement = document.addElement("HostIP");
hostIPElement.setText(hostip);
try

//new FileWriter(new File("HostIP.xml")), 没用你的写法
FileOutputStream fileOutputStream = new FileOutputStream(location);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");
OutputFormat fmt = OutputFormat.createPrettyPrint();
fmt.setEncoding("utf-8");
XMLWriter writer = new XMLWriter(outputStreamWriter,fmt);
writer.write(document);
writer.close();
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();



public static void main(String[] args)
//传保存路径
String location = "C:/test/HostIP.xml";
changeXML(location);


这个是我比着你的改的,可以用。你看看吧本回答被提问者采纳
参考技术B 晕,main()方法都没有怎么运行
1 最后一个括号前加入
public static void main(String args[])

new HostIP().changeXML();

2 你的程序里就没有输出语句加入main()方法你也看到的是白的
想看结果加入
System.out.println(document.asXML());
参考技术C 其实你应该生成了的,你刷新试一下,或者文件路径写成绝对路径。

PHP中用simpleXML解析XML文档,为啥总出错?

xml文档是一个自动生成的东西。我用simpleXML去解析他,但总是不一定在什么位置就会出错。
代码是这样:$xmld = new SimpleXMLElement($xml);
错误是这样的:
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\Apache\htdocs\extra.php:74
Stack trace:
#0 D:\Apache\htdocs\extra.php(74): SimpleXMLElement->__construct('')
#1 main
thrown in D:\Apache\htdocs\extra.php on line 74

这会是什么原因造成的呢?XML文档生成的不正确吗?
谢谢你~
我这里的的$xml就是通过file_get_contents(xml文件路径)获得的字符串,应该符合你说的要求吧?因为我在批量处理一些xml,有成功解析的,但是总是在进行到一定数量的时候出现这个错误

多谢专家~因为生成xml的那个程序是买来的,而且单个测试都没问题,只要一放进我的循环里就会出现这样的错误。可我也不能确定是哪一方的问题。
我又看了下,我是用@file_get_content来获得的xml,我把@去掉之后,出现的错误就应该是file_get_contents的错误了:Warning: file_get_contents(http://localhost:8081/newindex/GetUrl?lietu_uri=http://sound.zol.com.cn/subcate_223.html) [function.file-get-contents]: failed to open stream: HTTP request failed! in D:\Apache\htdocs\extra.php on line 74
=========
回sunnyPower:因为我是调用来的xml,而单独调用得到的这个xml没有问题。我怀疑是不是因为file_get_contents就没给抓过来呢?
这个问题在这里有补充~麻烦高手帮个忙啦
http://zhidao.baidu.com/question/96267985.html

你说的“而且单个测试都没问题”只是抽样测试,并不是测试全部。应该有至少一个XML格式是不正确的。如果你加了我的代码,应该会输出这个不正确的XML的内容。你把这个内容贴出来给你看看,没有什么机密吧?如果可以的话,加百度HI。账号:everalan

你加我的代码后,有执行到die($xml)这一行吗?有的话把输出的XML内容发过来帮你分析一下

应该是XML本身的格式就不正确,自然解析失败
try
$xmld = new SimpleXMLElement($xml);
catch(Exception $e)
die($xml);


这样出错的时候就能知道那个XML是什么内容就知道哪里错了
参考技术A 对于字符串转换成xml,应该用simplexml_load_string函数唯一的参数就是要转换的字符串
不过要注意的是,这个函数要求字符串最前面必须有xml的文档声明
<?xml version="1.0" encoding="utf-8"?>

以上是关于我用dom4j创建了一个xml文档,没有错误,但运行没有结果,哪位高手指点一下的主要内容,如果未能解决你的问题,请参考以下文章

Dom4j解析语音数据XML文档(注意ArrayList多次添加对象,会导致覆盖之前的对象)

Java案例:利用dom4j解析XML文件

如何用Dom4j获取CDATA结点内容

Dom4J解析xml文件

使用Dom4j对XML文档创建与解析

使用dom4j写xml文件——源码