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()