oracle数据库如何解析XML数据获取值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库如何解析XML数据获取值?相关的知识,希望对你有一定的参考价值。
<ItemIn quantity="2" lineNumber="2">
<ItemID SupplierPartID="2RUS0H-500"/>
<ItemDetail ManufacturerName="MISUMI">
<UnitPrice>
<Money currency="RMB"><![CDATA[103.650]]></Money>
</UnitPrice>
<Description ShortName="开关·传感器用滑轨/SENSOR BRACKET" xml:lang="cn"/>
<Extrinsic name="IncludeTaxSUPrice"><![CDATA[117.120]]></Extrinsic>
<Extrinsic name="pieces"><![CDATA[1]]></Extrinsic>
<Extrinsic name="SoUnitQty"><![CDATA[1]]></Extrinsic>
<Extrinsic name="MinOrderQty"><![CDATA[1]]></Extrinsic>
<Extrinsic name="applyEndDate"><![CDATA[20200104]]></Extrinsic>
<Extrinsic name="brand"><![CDATA[MSM1]]></Extrinsic>
<Extrinsic name="QtVoucherNo"><![CDATA[WQ3502E6BC00]]></Extrinsic>
<Extrinsic name="QtLineNo"><![CDATA[2]]></Extrinsic>
<Extrinsic name="display3"/>
<Extrinsic name="display4"><![CDATA[03]]></Extrinsic>
<Extrinsic name="display5"><![CDATA[03912313]]></Extrinsic>
</ItemDetail>
</ItemIn>
xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap, 'name'));可以获取name里面的如何获取键值对里面的值
要获取以上 每一个Extrinsic 中的值用存储过程或者查询如何实现
举例:
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("--------------------------------------");
参考技术A 1.引言 本文主要阐述一种在ORACLE中解析XML的实现方法。在oracle8i...
2.现象描述 当前,XML数据格式越来越多的应用于各种业务信息系统以及数据交换等应用范围,...
3.处理过程 XML数据可以为字符串(适合处理较小的xml数据)、物理文件或CLOB字段(...
4.原因分析 目前,在实际的业务信息系统应用开发中,更多的都习惯在程序中(如java,....
5.经验总结 通过在ORACLE数据库中直接解析XML数据,能够更方便灵活的处理xml数...
SQLServer解析xml到Oracle
写了一个程序:根据状态位读取SQLserver 中的一张表,下载其中一个字段的值,这个值是XML类型的,然后把这个XML文件的内容插入到另一Oracle数据库,并更新SQLServer表的标志位,表示这条记录已经更新过。
我的思路是用java写个webservice,然后再用C#写个windows 服务每过30分钟运行一次。用java写业务是因为我觉得java操作oracle相对方便一点。用C#写windows服务是是因为我只知道能用C#写windows service,后台静默运行挺好。
看似简单的程序,最后真正实现需求居然也花了3天时间,因为遇到了几个小问题,并且还有未解决的。
接下来罗列一下遇到的问题。
Q1 java解析XML内容
已解决:参考http://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html
用的是第一种DOM方法
Q2 java jdbc连接Oracle数据库问题
已解决:关键代码如下
String driverClassName = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@//192.168.101.22:1521/orcl";
注意,java代码里的sql语句最后不要写分号,否则会报错 java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符 。
Q3 java 怎么写一个webservice
已解决:
参考:http://javapapers.com/web-service/java-web-service-using-eclipse/
写好java 类以后(Dynamic Web Project工程下),直接右击新建webservice。
需要注意的是,要生成的方法必须是小写字母开头的,否则就无法调用了。java里方法要小写开头!
我用java 写好了一个Service类。接下来就是
Q4 下载好了XML文件,然后在解析这个XML文件时,发生了异常:
xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence
引起这个问题的原因是,java下载XML文件默认编码格式是GBK,而我们用DOM去解析xml文件的时候,用的是UTF-8的方式去解析,编码对不上,所以不能识别xml文档。
http://bbs.itheima.com/thread-29901-1-1.html
http://blog.csdn.net/zhangzhikaixinya/article/details/7727938 这种方法我没试过
代码实现
1 /** 2 * 写日志 3 * @param logpath 日志文件路径 4 * @param logtext 日志内容 5 */ 6 public void WriteLog(String logpath,String logtext) 7 { 8 File file = new File(logpath); 9 10 try 11 { 12 //Writer out = new FileWriter(file,true); 13 OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file, true),"utf-8"); 14 out.write(logtext); 15 out.close(); 16 } catch (IOException e) 17 { 18 // TODO Auto-generated catch block 19 e.printStackTrace(); 20 } 21 }
Q5 写好了程序,发布本地,测试通过,发布到远程服务器上,调用提示404 找不到资源。我用C#调用的java webservice。
未解决……
暂时就本地运行。
以上是关于oracle数据库如何解析XML数据获取值?的主要内容,如果未能解决你的问题,请参考以下文章
如何解决ORA-12154:TNS:无法解析指定的连接标识符
oracle 中备份数据的时候出现 EXP-00056: 遇到 ORACLE 错误 12154 ORA-12154: TNS: 无法解析指定的连接标
Oracle数据库ORA-12154: TNS: 无法解析指定的连接标识符详解