`
douh
  • 浏览: 16578 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

DOM4J处理XML带有命名空间的四种方法

阅读更多
原文链接:
http://edu.codepub.com/2010/0508/22560.php
先说前两个方法,是从网上看来的。摘抄如下:
xml代码example:
再说前三种方法,也是从网上看来的。http://edu.codepub.com/2010/0508/22559.php
<report   xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.15" id="1">
    <list-property name="cssStyleSheets">
        <structure>
            <property name="fileName">D: eport.css</property>
        </structure>
    </list-property>
</report>
第一个方案.设置你的xpath的命名空间setNamespaceURIs


public class TransferXML {
    public static void main(String[] args) throws Exception{
         Map map = new HashMap();
         map.put("design","http://www.eclipse.org/birt/2005/design");
         SAXReader saxReader = new SAXReader();
         File file = new File("D:\test.xml");
         Document document = saxReader.read(file);
         XPath x = document.createXPath("//design:list-property");
         x.setNamespaceURIs(map);
         List nodelist = x.selectNodes(document);
         System.out.println(nodelist.size());
     }
}
第二个解决方案:设置你的DocumentFactory()的命名空间 setXPathNamespaceURIs
public class TransferXML {
    public static void main(String[] args) throws Exception{
         Map map = new HashMap();
         map.put("design","http://www.eclipse.org/birt/2005/design");
         SAXReader saxReader = new SAXReader();
         File file = new File("D:\test.xml");
         saxReader.getDocumentFactory().setXPathNamespaceURIs(map);
         Document document = saxReader.read(file);
         List tmp = document.selectNodes("//design:list-property");
         System.out.println(tmp.size());
     }
}
第三种方法:本人用的,最笨也是最通用的方法,就是不使用开发环境给你提供的一系列对象,而是用XPath语法中自带的local-name() 和 namespace-uri() 指定你要使用的节点名和命名空间。
当你遇到使用xslt来样式化xml时,就知道这个笨方法的好处了:
public class TransferXML {
    public static void main(String[] args) throws Exception
         SAXReader saxReader = new SAXReader();
         File file = new File("D:\test.xml");
         Document document = saxReader.read(file);
         List tmp = document.selectNodes("//*[local-name()='report' and namespace-uri()='http://www.eclipse.org/birt/2005/design']/* [local-name()='list-property']");
         System.out.println(tmp.size());
     }
}


第四种方法: 本人曾经和别人探讨时用到的,当只需要一个元素时,也可以不用设置命名空间。
用element的element方法取一个子元素或elementIterator方法取多个元素。当只要获取属性时,可以用
document的selectNodes方法。
public class TransferXML {
    public static void main(String[] args) throws Exception
         SAXReader saxReader = new SAXReader();
         File file = new File("D:\test.xml");
         Document document = saxReader.read(file);
         Element root = document.getRootElement();
 
       Element ele = root.element("report");
        System.out.println(ele.getName());
        List list = document.selectNodes("//@name");
        System.out.println(list.size());
        }
}

还有一个方法:
如果在程序中命名空间没有什么作用,可以将命名空间去掉。
比如:
String strWithoutNamespace=str.replace("xmlns=\"http://intfcenter.gxtelco.com\"", "");
分享到:
评论

相关推荐

    dom4j 读取带有命名空间的xml文件

    NULL 博文链接:https://qiaokeli.iteye.com/blog/1790138

    xml入门教程/xml入门教程

    事例:带有子元素的元素结构定义 &lt;!ELEMENT studinfo (name,age,course+,interest*,gendar?)&gt; "?" 表示子元素只可以出现一个,也可以不出现 (0到1) "+" 表示子元素必须出现,可以出现多个 (1到多) "*" 表示...

    XML高级编程

    所以XML作为数据的这条主线包括:第6章:SAX:XML的简单API 第7章:命名空间和模式第8章:链接和查询第9章:操作XML 第10章:XML和数据库第11章:服务器到服务器第12章:电子商务第14章:WAP和WML 3. XML的可视化...

    xml实用大全和轻松学习手册和无废话xml

    14.2.5 直接显示带有XSL样式单的XML文件 434 14.3 XSL模板 436 14.3.1 xsl:apply-templates元素 436 14.3.2 select特性 438 14.4 使用xsl:value-of来计算节点值 440 14.5 使用xsl:for-each处理多个元素 442 14.6 ...

    XML实用大全(web开发必备手册)

    .4 为XML文档编写样式单... 40 .5 将样式单附加到XML文档上... 41 3.6 本章小结... 43 第4章 数据的结构化... 44 4.1 检查数据... 44 4.1.1 击球手... 44 4.1.2 投球手... 46 4.1.3 XML数据的组织... 46 4.2...

    JavaScript王者归来part.1 总数2

     13.6.4 标记行--呈现有别于其他行的背景色   13.6.5 小技巧--将代码添加到样式表   13.7 总结   第14章 级联样式表  14.1 什么是级联样式表   14.1.1 CSS样式和样式表   14.1.2 CSS的标准化   14.1.3...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    14.2.3 XML命名空间 14.2.4 XML架构 14.3 基于流的XML处理 14.3.1 写XML文件 14.3.2 读取XML文件 14.4 内存中的XML处理 14.4.1 XmlDocument 14.4.2 XPathNavigator 14.4.3 XDocument 14.5 搜索...

    ASP.NET4高级程序设计(第4版) 3/3

    14.2.3 XML命名空间 473 14.2.4 XML架构 474 14.3 基于流的XML处理 475 14.3.1 写XML文件 476 14.3.2 读取XML文件 478 14.4 内存中的XML处理 481 14.4.1 XmlDocument 482 14.4.2 XPathNavigator 485...

Global site tag (gtag.js) - Google Analytics