使用org.apache.xpath.XPathAPI解析XML的名字空间问题,高手请进!

tjzjl55 2007-08-30 03:07:47
使用org.apache.xpath.XPathAPI的selectNodeList(Node contextNode, java.lang.String str)解析XML,
<a>
<aaa xmlns="http://xxx/xxx">
</aaa>
</a>
当读取<aaa>时,读不到,我测试了一下,将名字空间去掉,就可以读到,请问有解决方法吗?使用XPathAPI。

...全文
978 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2007-08-30
  • 打赏
  • 举报
回复
下面的方法是可以取到的

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.xml.parsers.*"%>
<%@ page import="javax.xml.parsers.DocumentBuilderFactory"%>
<%@ page import="org.apache.xpath.*"%>
<%@ page import="java.io.File"%>
<%@ page import="org.w3c.dom.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<%
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new File("D:\\Java\\Work\\space\\WebContent\\test\\x.xml"));
NodeList accountNodes = XPathAPI.selectNodeList(doc, "/a/aaa");
for (int accountNodeIndex = 0; accountNodeIndex < accountNodes.getLength(); accountNodeIndex++) {
Element accountElement = (Element) accountNodes.item(accountNodeIndex);
String accountID = accountElement.getTextContent();
out.print(accountID);
}
} catch (Exception ex) {
out.print(ex.getLocalizedMessage());
}
%>
</body>
</html>
孟子E章 2007-08-30
  • 打赏
  • 举报
回复
名称空间尽管是默认的,但select 的时候不能少

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧