在dom4j中解析时设置名称空间为true

时间:2012-11-01 11:34:42

标签: java xml-parsing xml-namespaces dom4j

我正在使用dom4j解析一个xml文档,如下所示

            SAXReader reader = new SAXReader();
    document = reader.read("C:/test.xml");

但是当我写下xml时,它不会保留那些名称空间

    FileOutputStream fos = new FileOutputStream("c:/test.xml");

    OutputFormat format = OutputFormat.createPrettyPrint();

    XMLWriter writer = new XMLWriter(fos, format);


    writer.write(document);

    writer.flush();

如何使用dom4j执行此操作。由于代码容易,我正在使用dom4j。

1 个答案:

答案 0 :(得分:0)

不同意。这个片段

    System.out.println(new SAXReader()
            .read(new ByteArrayInputStream("<a:c xmlns:a='foo'/>"
                    .getBytes(Charset.forName("utf-8")))).getRootElement()
            .getNamespaceURI());

将打印

foo

您的问题是SAXReader#read(String)方法采用System ID参数,而不是文件名。相反,请尝试为读者提供FileInputStreamURL

 reader.read(new File("C:/test.xml"))