获取oracle 获取xmltpye节点中的属性值

<doc><sdelementid=""token="840a3605-a6c7-47a5-863f-b92ed763a261"cname="随访方式"fieldtype... <doc>
<sdelement id="" token="840a3605-a6c7-47a5-863f-b92ed763a261" cname="随访方式" fieldtype="1" biztype="6" value=""/>
<sdelement id="" token="2bae7759-2087-4686-8cbb-aa257c827523" cname="症状" fieldtype="1" biztype="6" value=""/>
<sdelement id="" token="4b282e79-9949-44f0-a4a9-80c028e0e55e" cname="心理调整" fieldtype="1" biztype="6" value=""/>
</doc>

我想获取 token="4b282e79-9949-44f0-a4a9-80c028e0e55e" 节点中的 canme的值
整个 xml是纯在数据库中的xmltype字段.在数据中字段名为附加信息
展开
 我来答
198901245631
2015-11-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1733万
展开全部
实现思路:可以通过w3c的dom解析器进行操作,之后通过getName获取到xmltpye中的属性值。
举例:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class DomTest1
{
public static void main(String[] args) throws Exception
{
// step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// System.out.println("class name: " + dbf.getClass().getName());
// step 2:获得具体的dom解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// System.out.println("class name: " + db.getClass().getName());
// step3: 解析一个xml文档,获得Document对象(根结点)
Document document = db.parse(new File("candidate.xml"));
NodeList list = document.getElementsByTagName("PERSON");
for(int i = 0; i < list.getLength(); i++)
{
Element element = (Element)list.item(i);
String content = element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
System.out.println("name:" + content);
System.out.println("--------------------------------------");
}
}
}
Dododododododododo
2015-01-30 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:83.6万
展开全部
把xml修改这样
<doc>
<sdelement id="" token="840a3605-a6c7-47a5-863f-b92ed763a261" cname="" fieldtype="1" biztype="6" >随访方式</sdelement>
<sdelement id="" token="2bae7759-2087-4686-8cbb-aa257c827523" cname="" fieldtype="1" biztype="6">症状</sdelement>
<sdelement id="" token="4b282e79-9949-44f0-a4a9-80c028e0e55e" cname="" fieldtype="1" biztype="6">心理调整</sdelement>
</doc>

用下边这条sql可以查询出来
select extractvalue(字段名,'/doc/sdelement[@token="840a3605-a6c7-47a5-863f-b92ed763a261"]') from 表名;
追问
你说这种方式我知道.  现在数据库里面就是这样的结构不能修改.
追答
select substr(a,instr(a,'cname="')+7,instr(a,'" fieldtype')-instr(a,'cname="')-7)
from (SELECT value(i) as a
FROM 表名, table(XMLSEQUENCE(extract(列名, '/doc/sdelement'))) i)
where a like '%'||'token="2bae7759-2087-4686-8cbb-aa257c827523"'||'%';
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式