XML 노드 값을 검색하려고 할 때 문제가 있습니다. 약간의 설명없이이 질문을하는 것은 어려울 것입니다. 내가 만든 Server - Client Chatroom이 있고 Server는 사용자의 사용자 이름이 들어있는 모든 XML 데이터를 처리합니다. 예를 들어 사용자는 서버의 모든 사용자에게 브로드 캐스팅 될 메시지를 보냅니다. 메시지가 서버에 도착하면 서버는 사용자의 현재 IP 주소를 기반으로 배열을 검사합니다. IP가 배열에 있으면 대응하는 숫자를 가진 또 다른 배열은 모든 chatroom 사용자에게 브로드 캐스팅되는 사용자 이름을 반환합니다. 새 사용자 또는 오프라인 사용자가 서버에 참여할 때 문제가 발생합니다. IP가 배열에없는 경우 서버는 온라인 또는 이전 사용자가 마지막으로 알고있는 모든 IP가있는 XML 파일을 검사합니다 (이 부분은 새 IP가있는 이전 사용자를 위해 해결됩니다). 그러면 서버가 정렬. 이것은 이론적으로는 작동하지만 코드에서는 동일한 결과를 산출하지 않습니다. 배열에 현재 IP를 추가 할 수 있지만 사용자 이름을 가져올 수 없습니다. 그리고 그것은 사용자의 이전 IP가 노드 이름이고 사용자 이름이 노드 값이라는 사실 때문이라고 생각합니다. 예를 들어 :XML 파일에서 노드 값을 올바르게 읽으려면 어떻게해야합니까?
public static void addInArray(String IPtoCheck) throws Exception{
File fXmlFile = new File("Usernames.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName(IPtoCheck);
for(int i=0; nList.getLength()>i; i++){
Node nNode = nList.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
if(eElement.getNodeName().equals(IPtoCheck)){
int used = 0;
while (used < 63){
if(IPs[used].equals("no")){
IPs[used] = IPtoCheck;
usernames[used] = eElement.getNodeValue();
AppendArea.Apen(3, usernames[used]);
break;
}
used++;
}
}
}
}
}
이 또한 내가
Arrays.fill(IPs, "no");
Arrays.fill(usernames, "no");
더가 나타내는 사용 않았 음을 추가해야합니다 : 이
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Server>
<i0000>User</i0000>
<i1921681114>Chappy</i1921681114>
</Server>
배열에 추가해야하는 기능을 파일 Usernames.xml 오픈 어레이 스팟
또한 IPtoCheck String i 수정 된 IP 값. XML에서 예를 들어 파일의 IP 노드는 다음과 같습니다
i1921681114
이 실제로 192.168.1.114
이 모든 긴 설명 후 제 질문은 다음과 같습니다
를 내가 제대로 읽기 어떻게 자바를 사용하는 XML 파일의 노드 값?
eElement.getNodeValue();
내 질문에 답변 해 주셔서 감사합니다. 그러나 나는 XML에 동일한 값을 가진 애트리뷰트를 추가하고 .getAttribute를 호출했다. 어쨌든 고마워! –
애트리뷰트는 자식이 없기 때문에 다르게 작동합니다. 요소의 * 노드 값 *이라고하는 속성은 하위 요소에 따라 다릅니다. 다른 API (또는 구현)는이를 문자열 값으로 평가하여 기본적으로 요소에 할당 할 수 있습니다. – helderdarocha