当前位置: 代码迷 >> Java相关 >> dom4j解析基于xml的文档——获取属性有关问题
  详细解决方案

dom4j解析基于xml的文档——获取属性有关问题

热度:5651   发布时间:2013-02-25 21:47:15.0
dom4j解析基于xml的文档——获取属性问题
dom4j解析基于xml的文档,给出如下一对元素:
<bpel:process name="CaculatorProcess"

  targetNamespace="http://www.pku.edu.cn/bpel/sample"

  suppressJoinFailure="yes"

  xmlns:tns="http://www.pku.edu.cn/bpel/sample"

  xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable"

  xmlns:ns1="http://add.example.ws" xmlns:ns2="http://sub.example.ws">
...
</bpel:process>
要获取元素<bpel:process>的属性,但实际只能获取前三个属性,即name, tartgetNamespace, suppressJoinFailure。而后四个属性则获取不到。
源代码如下:
Java code
public class testDom {    /**     * @param args     * @throws IOException      */    public static void testDom4() throws DocumentException, IOException{        SAXReader saxR = new SAXReader();        Document document = saxR.read("D:/source/CaculatorProcess.bpel");        Element root = document.getRootElement();            Iterator iter1 = root.attributeIterator();            for(;iter1.hasNext();){                Attribute attr = (Attribute)iter1.next();                System.out.println(attr.getName());            }            }    public static void main(String[] args) throws DocumentException, IOException, WSDLException {        // TODO Auto-generated method stub        testDom4();    }    }

若将后四个属性的前半部分(如"xmls:")去掉,则是可以解析出后半部分的(如"tns")。
请问在不改动源文档的情况下,如何才能获取后三个属性?????
谢谢!!!

------解决方案--------------------------------------------------------
xmlns是名空间Element.getNamespaceURI()可以获得

xmlns:xsi –> Element.getNamespaceForPrefix("xsi").getURI()

xsi:schemaLocation –> el.selectSingleNode("@xsi:schemaLocation").getText()
  相关解决方案