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

Java如何提取完整的XML块

梁韬
2023-03-14
问题内容

使用此XML示例:

<A>
  <B>
    <id>0</id>
  </B>
  <B>
    <id>1</id>
  </B>
</A>

我想要一个简单的方法来提取节点B的XML块,并返回XML字符串:

<B>
  <id>1</id>
</B>

要检索此节点,我应该使用一些Java XPath库,例如XOM或Java XPath,但是我找不到如何获取完整的XML字符串。


问题答案:

添加到lwburk的解决方案中,要将DOM节点转换为字符串形式,可以使用Transformer:

private static String nodeToString(Node node)
throws TransformerException
{
    StringWriter buf = new StringWriter();
    Transformer xform = TransformerFactory.newInstance().newTransformer();
    xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    xform.transform(new DOMSource(node), new StreamResult(buf));
    return(buf.toString());
}

完整的例子:

public static void main(String... args)
throws Exception
{
    String xml = "<A><B><id>0</id></B><B><id>1</id></B></A>";
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    Document doc = dbf.newDocumentBuilder().parse(new InputSource(new StringReader(xml)));

    XPath xPath = XPathFactory.newInstance().newXPath();
    Node result = (Node)xPath.evaluate("A/B[id = '1']", doc, XPathConstants.NODE);

    System.out.println(nodeToString(result));
}

private static String nodeToString(Node node)
throws TransformerException
{
    StringWriter buf = new StringWriter();
    Transformer xform = TransformerFactory.newInstance().newTransformer();
    xform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
    xform.transform(new DOMSource(node), new StreamResult(buf));
    return(buf.toString());
}


 类似资料:
  • 问题内容: 我的目标是在从链接读取href属性时始终获取相同的字符串(在我的情况下为URI)。举例:假设认为,一个HTML文件,它有一个像somany链接 ,但基本域是http://www.domainname.com/index.html 但基本域是http://www.domainname.com/dit/index.html 如何我可以正确获取所有链接意味着完整链接包括域名吗? 我如何在Ja

  • 假设我的示例url是 http://example.com/one/two 我说我有以下路线 的值将为。 如何获取Express中的完整url?例如,在上面的情况下,我希望收到。

  • 问题内容: 我已经用以下代码读取了Java中的XML文件: 那么,如何从节点实例获取完整的xml内容?(包括所有标签,属性等) 谢谢。 问题答案: 您将使用DOMSource(而不是StreamSource),并在构造函数中传递您的节点。 然后,您可以将节点转换为字符串。 快速样本:

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

  • 问题内容: 假设我的示例网址是 http://example.com/one/two 我说我有以下路线 值将是。 如何在Express中获取 完整的URL ?例如,在上述情况下,我想收到。 问题答案: 该协议可从下载。这里的文档 在express 3.0之前,除非您看到已设置并具有value 的协议,否则可以假定为该协议,在这种情况下,您知道这是您的协议 主机来自Gopal指示 希望您的URL中不

  • python如何获取完整的os版本 OS 版本: 10.0.19045 暂缺 Build 19045 用了一些办法这能获取:10.0.19045后面的暂缺 暂缺 Build 19045 获取不到 有什么办法获取完整的10.0.19045 暂缺 Build 19045