首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java DOM中以字符串形式获取节点的内部XML

在Java DOM中以字符串形式获取节点的内部XML
EN

Stack Overflow用户
提问于 2010-07-21 23:14:33
回答 8查看 29.5K关注 0票数 25

我有一个XML org.w3c.dom.Node,看起来像这样:

<variable name="variableName">
    <br /><strong>foo</strong> bar
</variable>

如何获取字符串形式的<br /><strong>foo</strong> bar部件?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-05-10 17:57:30

同样的问题。为了解决这个问题,我编写了这个helper函数:

public String innerXml(Node node) {
    DOMImplementationLS lsImpl = (DOMImplementationLS)node.getOwnerDocument().getImplementation().getFeature("LS", "3.0");
    LSSerializer lsSerializer = lsImpl.createLSSerializer();
    NodeList childNodes = node.getChildNodes();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < childNodes.getLength(); i++) {
       sb.append(lsSerializer.writeToString(childNodes.item(i)));
    }
    return sb.toString(); 
}
票数 47
EN

Stack Overflow用户

发布于 2010-07-25 07:05:30

org.w3c.dom.Node上没有简单的方法可以做到这一点。getTextContent()提供了连接在一起的每个子节点的文本。如果当前节点是AttributeCDATAText节点,则getNodeValue()将为您提供当前节点的文本。因此,您需要使用getChildNodes()getNodeName()getNodeValue()的组合来序列化节点来构建字符串。

您也可以使用现有的各种XML序列化库中的一个来完成此任务。有XStream甚至是JAXB。这里讨论了这个问题:XML serialization in Java?

票数 6
EN

Stack Overflow用户

发布于 2012-01-22 19:19:10

如果您使用的是jOOX,则可以将节点包装在jquery-like语法中,并对其调用toString()

$(node).toString();

它在内部使用身份转换器,如下所示:

ByteArrayOutputStream out = new ByteArrayOutputStream();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
Source source = new DOMSource(element);
Result target = new StreamResult(out);
transformer.transform(source, target);
return out.toString();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3300839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档