gpt4 book ai didi

Java XML解析使用DOM获取节点值

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:50 24 4
gpt4 key购买 nike

    try {
String data = "<a><b c='d' e='f'>0.15</b></a>";
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(data));
Document document = documentBuilder.parse(is);

NodeList nl = document.getElementsByTagName("b");
Node n = (Node) nl.item(0);
System.out.println(n.getNodeValue());
} catch (Exception e) {
System.out.println("Exception " + e);

}

我期待它打印 0.15,但它打印为空。有什么想法吗?

编辑:这成功了

        if (n.hasChildNodes())
System.out.println(n.getFirstChild().getNodeValue());
else
System.out.println(n.getNodeValue());

最佳答案

那是因为an element in fact has no nodeValue .相反,它有一个文本节点作为子节点,它具有您想要的 nodeValue

简而言之,您需要在元素节点的第一个子节点上getNodeValue()

有时该元素包含多个文本节点,因为它们确实有最大尺寸,在这种情况下,您需要一些类似的东西,来自前面链接的页面:

public static String getNodeValue(Node node) {
StringBuffer buf = new StringBuffer();
NodeList children = node.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node textChild = children.item(i);
if (textChild.getNodeType() != Node.TEXT_NODE) {
System.err.println("Mixed content! Skipping child element " + textChild.getNodeName());
continue;
}
buf.append(textChild.getNodeValue());
}
return buf.toString();
}

关于Java XML解析使用DOM获取节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com