0

我正在使用 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 是因为代码简单。

4

1 回答 1

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参数,而不是文件名。相反,请尝试为读者提供 一个File、 或 一个InputStream或 一个URL

 reader.read(new File("C:/test.xml"))
于 2012-11-04T01:40:35.360 回答