Dom4j解析命名空间

本文转自:http://hi.baidu.com/baileyfu/item/f8c011acaf85c23c020a4d4e

 

同时可以前往http://licg1234.blog.163.com/blog/static/1390823332011369483630/查看

testXml.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE catalog SYSTEM "file://c:/catalog.dtd">

<catalog xmlns="http://java.sun.com/xml/ns/jbi">

<!--An XML catalog->

<?target text?>

<journal title="XML Zone" publisher="IBM developerWorks">
             <article level="Intermediater" date="december-2001">
                         <title>XMLSchema</title>
                         <author>
                                      <firstname>Marcello</firstname>
                                      <lastname>liuchao</lastname>
                         </author>
            </article>
</journal>

</catalog>

解析:
public class XmlParser()
{
          public static void main(String args[])
         {
                    File xmlFile=new File("c:\testXml.xml");
                    SAXReader reader=new SAXReader();
                    try
                   {
                                        Document doct=reader.read(xmlFile);
                                        HashMap nsMap=new HashMap();
                                        nsMap.put("ns","http://java.sun.com/xml/ns/jbi");          //加入命名空间
                                        //获取子节点
                                        XPath xsub=doct.createXPath("//ns:title");
                                        xsub.setNamespaceURIs(nsMap);
                                        Element element = (Element) xsub.selectSingleNode(doct);
                                        //获取属性
                                        XPath xattrb=doct.createXPath("//ns:journal/@title");
                                        xattrb.setNamespaceURIs(nsMap);
                                        Attribute attrb=(Attribute) xattrb.selectSingleNode(doct);
                   }catch(DocumentException de)
                            {
                                         de.printStackTrace();
                            }
         }
}

上面就是运用dom4j解析带命名空间的xml文件的节点的例子,只要给XPath设置默认的命名空间就行了,这个xml文件尽管定义了其他命名空间,但 是没有用到它,所以不必管它,那个HashMap里的键是随便定义的字符串,值就是默认的命名空间对应的字符串。 document.createXPath()里传的参数是要读取的节点的XPath,即“//”+ HashMap里的键名 + “:”+ 要读取的节点名组成的字符串

你可能感兴趣的:(命名空间,dom4j,xmlns)