我有一个简单的XML文件,像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!--Generic Params-->
<PARAM_LIST>
<PARAM>
<KEY>USERNAME</KEY>
<VALUE>DAVID</VALUE>
</PARAM>
</PARAM_LIST>我想使用DBMS_XMLDOM解析它,我进入循环,但我无法从nor键标记或值获得值,而且,我甚至不确定我是否完全访问PARAM标记。
lv_ParamList := dbms_xmldom.getElementsByTagName(lv_res_domDoc, 'PARAM_LIST');
IF NOT dbms_xmldom.isnull(lv_ParamList) THEN
-- Looping over parameters
FOR lv_ParamNo IN 0..dbms_xmldom.getLength(lv_ParamList)-1 LOOP
lv_ParamNode := dbms_xmldom.item(lv_ParamList,lv_ParamNo);
lv_TempNode := dbms_xmldom.getNamedItem(lv_ParamAttributes,'USERNAME');
lv_Vc2_TagValue := dbms_xmldom.getValue(dbms_xmldom.makeattr(lv_TempNode));
lv_TempNode := dbms_xmldom.getNamedItem(lv_ParamAttributes,'KEY');
lv_Vc2_TagValue := dbms_xmldom.getValue(dbms_xmldom.makeattr(lv_TempNode));
END LOOP;
END IF;请协助。
发布于 2016-06-20 23:43:26
就像这样克服了它:
FOR lv_ParamNo IN 0..dbms_xmldom.getLength(lv_ParamList)-1 LOOP
lv_ParamNode := DBMS_XMLDOM.Item(lv_ParamList, lv_ParamNo);
lv_ParamSet := Dbms_Xmldom.Getchildnodes(lv_ParamNode);
lv_Num_EventId := dbms_xmldom.getLength(lv_ParamSet);
FOR lv_ParamInNo IN 0..dbms_xmldom.getLength(lv_ParamSet)-1 LOOP
lv_ParamKey := Dbms_Xmldom.Item(lv_ParamSet,lv_ParamInNo);
lv_Vc2_DeviceName := Dbms_Xmldom.Getnodename(lv_ParamKey);
lv_TempNode := Dbms_Xmldom.Getfirstchild(lv_ParamKey);
lv_Vc2_KeyTagName := Dbms_Xmldom.Getnodevalue(lv_TempNode);
IF lv_Vc2_KeyTagName = 'USERNAME' THEN
lv_ParamKey := Dbms_Xmldom.Item(lv_ParamSet,lv_ParamInNo+1);
lv_Vc2_TagName := Dbms_Xmldom.Getnodename(lv_ParamKey);
lv_TempNode := Dbms_Xmldom.Getfirstchild(lv_ParamKey);
lv_Vc2_FulUserName := Dbms_Xmldom.Getnodevalue(lv_TempNode);
ELSIF lv_Vc2_KeyTagName = 'ADDRESS' THEN
lv_ParamKey := Dbms_Xmldom.Item(lv_ParamSet,lv_ParamInNo+1);
lv_Vc2_TagName := Dbms_Xmldom.Getnodename(lv_ParamKey);
lv_TempNode := Dbms_Xmldom.Getfirstchild(lv_ParamKey);
lv_Vc2_Address := Dbms_Xmldom.Getnodevalue(lv_TempNode);
END IF;
END LOOP;
END LOOP;这意味着我要为每个PARAM节点迭代XML。对于每个这样的节点,我迭代键值对,获得键并(在内部循环中)移动到相关值。一个小的缺点是,我迭代键,内部循环得到值,迭代值,移动到下一个键。
https://stackoverflow.com/questions/37920539
复制相似问题