Java 如何正确读取XML文件中的节点值?

Java 如何正确读取XML文件中的节点值?,java,xml,dom,Java,Xml,Dom,我在尝试检索XML节点值时遇到问题。如果没有一点解释,很难提出这个问题。我创建了一个服务器-客户端聊天室,服务器处理包含用户用户名的所有XML数据。例如,用户发送一条消息,该消息将广播给服务器上的每个人。当消息到达服务器时,服务器将根据用户当前的IP地址检查阵列。如果IP位于阵列中,则另一个具有相应编号的阵列将返回用户名,然后将该用户名广播给所有聊天室用户。当新用户或脱机用户加入服务器时,我的问题就会出现。如果IP不在阵列中,服务器将检查一个XML文件,该文件包含所有在线用户或老用户最后一个已知

我在尝试检索XML节点值时遇到问题。如果没有一点解释,很难提出这个问题。我创建了一个服务器-客户端聊天室,服务器处理包含用户用户名的所有XML数据。例如,用户发送一条消息,该消息将广播给服务器上的每个人。当消息到达服务器时,服务器将根据用户当前的IP地址检查阵列。如果IP位于阵列中,则另一个具有相应编号的阵列将返回用户名,然后将该用户名广播给所有聊天室用户。当新用户或脱机用户加入服务器时,我的问题就会出现。如果IP不在阵列中,服务器将检查一个XML文件,该文件包含所有在线用户或老用户最后一个已知的IP(这部分将为拥有新IP的老用户解析),然后服务器将其添加到阵列中。这在理论上是可行的,但是在代码中它不会产生相同的结果。我可以将当前IP添加到阵列中,但无法获取用户名。我相信这是因为用户的旧IP是节点名,用户名是节点值。 例如: Usernames.xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Server>
    <i0000>User</i0000>
    <i1921681114>Chappy</i1921681114>
</Server>
否表示打开的阵列点

IPtoCheck字符串也是一个修改过的IP值。例如,在XML文件中,ip节点是:

i1921681114
这实际上是192.168.1.114

经过这么长时间的解释,我的问题如下:

如何使用Java正确读取XML文件中的节点值?


因为eElement.getNodeValue();没有返回正确的值,它只返回“null”

org.w3c.dom.Element
对象从来没有节点值,因此它将始终返回null

你需要得到它的孩子。如果您使用:

eElement.getFirstChild().getNodeValue();
您将检索元素的第一个子节点,即所需的文本节点

您还可以使用:

eElement.getFirstChild().getTextContent();
返回元素的文本内容,在本例中,该元素具有相同的结果


如果您发现Java中的DOM API违反直觉,您可以使用其他API,如JDOM或DOM4J,或使用其他J2SE标准方法,如XPath。

感谢您回答我的问题!然而,我只是在xml中添加了一个具有相同值的属性,并调用了.getAttribute,它的工作原理是相同的。无论如何谢谢你!属性的工作方式不同,因为它们没有子对象。称为元素的节点值的属性取决于其子元素。其他API(或实现)可能会将其计算为字符串值,并在默认情况下将其分配给元素。
eElement.getFirstChild().getNodeValue();
eElement.getFirstChild().getTextContent();