XML的Java DOM解析-无法从子节点获得属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了XML的Java DOM解析-无法从子节点获得属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2098字,纯文字阅读大概需要3分钟。
内容图文
![XML的Java DOM解析-无法从子节点获得属性](/upload/InfoBanner/zyjiaocheng/658/b466f8cf82ef4e3cb6210cf42fdbb8a8.jpg)
我正在尝试使用Java中的DOM解析器解析XML文档.我需要获取各种属性的值.我正在尝试解析以下文档:
<?xml version="1.0" encoding="UTF-8"?>
<BirthResults>
<Results>
<Rejected>
<Reject>
<Birth Etg = "etg1"/>
<Causes>
<Cause Code = "test1" Desc = "Desc1"/>
</Causes>
</Reject>
<Reject>
<Birth Etg = "etg2"/>
<Causes>
<Cause Code = "test2" Desc = "Desc2"/>
</Causes>
</Reject>
</Rejected>
</Results>
</BirthResults>
使用以下代码:
import java.io.InputStream;
import java.util.HashMap;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.ksoap2.serialization.SoapObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Parsers {
String Etg, Dob, Breed, Brd, Sex, EId, GdEtg, SuEtg, SiEtg, BLoc, BSLoc,
PLoc, PSLoc, Code, Desc;
static String response;
public String Birth(InputStream in) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(in);
doc.getDocumentElement().normalize();
try {
NodeList list = doc.getElementsByTagName("Reject");
int L = list.getLength();
for (int x = 0; x < L; x++) {
setNull();
Node node = list.item(x);
NodeList sublist = node.getChildNodes();
for (int y = 0; y < sublist.getLength(); y++) {
Node finNode = (Node) sublist.item(y);
if (finNode.getNodeType() == Node.ELEMENT_NODE) {
Element fin = (Element) finNode;
getAttributes(fin);
}
}
}
}catch(Exception e){}
}catch(Exception e){}
}
private void getAttributes(Element fin) {
Etg = fin.getAttribute("Etg");
Code = fin.getAttribute("Code");
System.out.println(Etg + ":" + Code);
}
}
当我得到Etg的值时,Code和Desc的值将返回为空白.我认为这是因为它们被嵌入在更深的“层”中,但是我不知道如何解决该问题.
非常感谢.
解决方法:
NodeList子列表= node.getChildNodes();分配给子列表子项,这意味着已分配了以下节点:出生,原因. Causes节点包含子项列表,因此,如果finNode是Birth元素,则可以获取Egt attr,但是如果finNode是Causes,则必须获取子项,然后可以从“ Causes”的每个子项中读取Code和Desc.
为了检查元素的名称,您可以使用fin.getTagName()
内容总结
以上是互联网集市为您收集整理的XML的Java DOM解析-无法从子节点获得属性全部内容,希望文章能够帮你解决XML的Java DOM解析-无法从子节点获得属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。