我是网络服务的初学者,任何有经验的人都可以帮助我解决以下问题:
我正在编写一个试图从 OMIM RESTful Web 服务获取信息的客户端。我正在使用注册后提供的密钥 OMIM。( http://omim.org/help/api ) 我成功连接到客户端。同样使用 GET 方法,我可以将所需的数据提取到 DOM 文档中。此外,我可以成功地将整个 DOM 写入本地磁盘上的文件中。但是,我无法使用可用于 DOM 的标准解析函数来处理 DOM。
例如:我可以使用 NodeList nl=doc.getDocumentElement() 获取根节点并打印到控制台上。但是当我尝试打印根节点的第一个子节点时,它返回 null 而不是预期的子节点。
示例 XML 表单:webservices -> DOM -> 文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?><omim version="1.0">
<clinicalSynopsisList>
<clinicalSynopsis>
<mimNumber>100070</mimNumber>
<prefix>%</prefix>
</clinicalSynopsis>
</clinicalSynopsisList>
</omim>
请在下面找到我的代码:
String path="http://api.omim.org:8000/api/clinicalSynopsis?mimNumber="+"100070"+"&include=clinicalSynopsis&format=xml&apiKey="+"<< xxxxx private key xxxxxxxxxx >> ";
URL url = new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
InputStream is = conn.getInputStream();
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = docBuilder.parse(is);
Source src= new DOMSource(doc);
File file = new File("d:/text.xml");
Result rs = new StreamResult(file);
TransformerFactory tmf = TransformerFactory.newInstance();
Transformer trnsfrmr = tmf.newTransformer();
trnsfrmr.transform(src, rs);
System.out.println("XML file is created successfully");
System.out.println("The root element is :: "+doc.getDocumentElement().getNodeName());
NodeList nl=doc.getDocumentElement().getChildNodes();
System.out.println("child nodelist length::"+nl.getLength());
System.out.println("First child node name :: "+doc.getDocumentElement().getFirstChild().getNodeName());
System.out.println("Last child node name :: "+doc.getDocumentElement().getLastChild().getNodeName());
我得到的输出:- XML 文件创建成功根元素是 :: omim child nodelist length::3 第一个子节点名称 :: #text 最后一个子节点名称 :: #text
在得到的输出中,根节点是“omim”,它有 3 个子节点。但在尝试打印第一个和最后一个子名称时返回 null。同样getParent()、getChild()、getSibling() 方法对我不起作用。
任何帮助将不胜感激。
谢谢,