当前位置: 首页 > 面试题库 >

从Node实例获取完整的xml文本

濮阳繁
2023-03-14
问题内容

我已经用以下代码读取了Java中的XML文件:

File file = new File("file.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);

NodeList nodeLst = doc.getElementsByTagName("record");

for (int i = 0; i < nodeLst.getLength(); i++) {
     Node node = nodeLst.item(i);
...
}

那么,如何从节点实例获取完整的xml内容?(包括所有标签,属性等)

谢谢。


问题答案:

您将使用DOMSource(而不是StreamSource),并在构造函数中传递您的节点。

然后,您可以将节点转换为字符串。

快速样本:

public class NodeToString {
    public static void main(String[] args) throws TransformerException, ParserConfigurationException, SAXException, IOException {
        // just to get access to a Node
        String fakeXml = "<!-- Document comment -->\n    <aaa>\n\n<bbb/>    \n<ccc/></aaa>";
        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc = docBuilder.parse(new InputSource(new StringReader(fakeXml)));
        Node node = doc.getDocumentElement();

        // test the method
        System.out.println(node2String(node));
    }

    static String node2String(Node node) throws TransformerFactoryConfigurationError, TransformerException {
        // you may prefer to use single instances of Transformer, and
        // StringWriter rather than create each time. That would be up to your
        // judgement and whether your app is single threaded etc
        StreamResult xmlOutput = new StreamResult(new StringWriter());
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transformer.transform(new DOMSource(node), xmlOutput);
        return xmlOutput.getWriter().toString();
    }
}


 类似资料:
  • 我想从URI中获得完整的文件路径。URI不是图像,而是音乐文件,但如果我像纵隔解决方案那样做,如果应用程序用户选择eg Astro作为浏览器,而不是音乐播放器,它就不会工作。我怎么解决这个?

  • 问题内容: 假设有人输入这样的网址: 我想返回: 不 这是我现在拥有的代码 但这又回来了 问题答案: 检查下面的代码,它应该做的很好。

  • 问题内容: 有没有一种简单的方法可以打印的完整路径? 的 应该打印 问题答案: 使用 readlink :

  • 问题内容: 我有一个表单(HTML,PHP),允许最终用户上传文件,以使用上传文件(特别是.csv)中的记录来更新数据库(MySQL)。但是,在phpscript中,我只能获取文件名,而不能获取特定文件的完整路径。由于这个原因,fopen()失败。谁能让我知道如何找到完整的路径? HTML代码: PHP脚本: 问题答案: 引用 客户端 上的文件名。要在 服务器端 获取文件名(包括完整路径),您需要

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 使用jQuery输入文件的完整路径 我有以下html元素 如果我用 我只是文件名,而不是文件的完整绝对路径。有人可以告诉我如何获得完整路径吗? 问题答案: 您不能这样做-由于安全问题,浏览器将不允许这样做。尽管有解决方法,但事实是您不应该依靠这种方法。以下堆栈溢出问题与此处相关: 使用jquery输入文件的完整路径 如何从Fir

  • 问题内容: 使用此XML示例: 我想要一个简单的方法来提取节点B的XML块,并返回XML字符串: 要检索此节点,我应该使用一些Java XPath库,例如XOM或Java XPath,但是我找不到如何获取完整的XML字符串。 问题答案: 添加到lwburk的解决方案中,要将DOM节点转换为字符串形式,可以使用Transformer: 完整的例子: