`
popjxc
  • 浏览: 66879 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XML中的QName和Namespace的实例演示

    博客分类:
  • XML
阅读更多

 

在处理emf生成的xml文件时,遇到了如下xml片段:

 

 

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

<root xmlns:xmi="http://www.omg.org/XMI">
  <node id="12345" xmi:id="54321"/>
</root>
 

 

node节点有id和xmi:id两个属性,用普通的的方法element.attributeValue("xmi:id"),得到的值有时是12345,有时却是54321,貌似是优先取第一个遇到的属性。

要想分别取得id和xmi:id的值,就要用到QName和Namespace的概念。

Namespace分为prefix和uri,prefix就是那个属性前缀xmi,url就是等号右边的http://www.omg.org/XMI。

例如上段xml中在root中定义了一个Namespace: xmlns:xmi="http://www.omg.org/XMI"。

Qname比普通节点多了一个前缀,这个前缀就是Namespace中的前缀。实际上QName就是说在一个指定命名空间下的属性。

综上,可以看出id和xmi:id是在不同命名空间下的属性,使用QName可以很容易进行他们的读写操作。下面以dom4j来演示他们的读写区别。

先来个写xml文件的:

Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
root.add(Namespace.get("xmi", "http://www.omg.org/XMI"));
Element ele = root.addElement("node");

// write id="12345"
QName qname = QName.get("id");
ele.addAttribute(qname, "12345");

// write xmi:id="54321"
qname = QName.get("id", root.getNamespaceForPrefix("xmi"));
ele.addAttribute(qname, "54321");
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter output = new XMLWriter(new FileOutputStream(new File(
					"c:/test.xml")), format);
output.write(document);
output.close();
 

读取xml和写类似:

// read id="12345"
QName qname1 = QName.get("id");
String id = ele.attributeValue(qname1);
System.out.println(id);

// read xmi:id="54321"
qname1 = QName.get("id", root.getNamespaceForPrefix("xmi"));
String xmi_id = ele.attributeValue(qname1);
System.out.println(xmi_id);
 
2
4
分享到:
评论

相关推荐

    AS3中新的XML处理方法.pdf

    今天我们来看看AS3中新的XML处理方法:E4X,直到现在,ECMA脚本语言规范(ECMA-...这些类和方法的集合并命名为E4X("ECMAScript for XML"),ActionScript 3.0包括如下新的E4X类: XML、XMLList、 QName和Namespace。

    weblogic javax/xml/namespace/QName报错-附件资源

    weblogic javax/xml/namespace/QName报错-附件资源

    javax.xml.rpc相关jar包

    解决javax.xml jar包缺失的问题,引进javax.xml.rpc-api-1.1.1.jar

    qname.jar 包 下载

    qname.jar qname.jar

    qname.jar 包

    1. Add the QName JAR file (qname.jar) into the WEB-INF/lib folder in your WAR file 2. Add a file weblogic.xml into the WEB-INF folder in your WAR file Below is an example weblogic.xml file: &lt;!DOCTYPE ...

    xbean,xmlpublic,xml-apis等jar

    xbeanetc.rar 该压缩包包括如下jar包: xbean.jar xbean_xpath.jar xerces.jar xercesImpl.jar xercesImpl-2.6.2.jar xml-apis.jar xml-apis1.jar xml-apis-2.6.2.jar xmlbeans-qname.jar...

    dom4j解析xml详解,包含源代码,dom4j.jar包

    内附dom4j-1.6.1.rar(内有dom4j-1.6.1.jar包和附加包),解析xml详解文档,解析xml的java源码。

    prefix cannot be "null" when creating a QName

    这个问题曾困扰了我一段时间,无意中看到了网上的一篇文章,看完后真是觉得惭愧啊!还是平时的粗心大意造成的啊!

    Objective-c对象组装XML

    XmlPackage *xmlPackage = [[XmlPackage alloc]init]; NSData *data = [xmlPackage objctPackage:map objectName:@"book1" xmlTemplateName:@"template1"]; 或者 NSData *data = [xmlPackage listPackage:list ...

    xmlbeans-qname.jar

    xmlbeans-qname.jar

    DOM4J从基础到精通

    dom4j实例详解 1 目录 1 一、dom4j介绍 2 二、使用dom4j创建xml文档 3 三、使用dom4j解析xml文件 5 1. 构建dom4j树 5 2. 获取节点 5 3. 获取属性 6 4. 使用XPath获取节点和属性 6 四、使用dom4j修改xml文件 7 五、...

    js-qname:简单的QName(命名空间URI +本地名称)JavaScript的对象实现

    js-qname 简单的QName(命名空间URI +本地名称)JavaScript的对象实现

    通过xsd文件创建bean所需jar包

    0、包含xbean.jar xmlbeans-qname.jar jsr173_1.0_api.jar resolver.jar 1、使用xmlbeans通过xsd文件创建bean所需jar包; 2、xmlbeans可以去git上下载:git://git.apache.org/xmlbeans.git 3、命令如: D:\xmlbeans\...

    poi-4.1.2需要的jar包.zip

    poi-4.1.2需要的jar包,需要使用的朋友可以直接用,从maven库整理出来的。

    android xml文件操作

    xml文件操作 public class XmlUtils { /** * 获取Document对象。根据xml文件的名字获取Document对象。 * * @param file * 要获取对象的xml文件全路径。 * @return 返回获取到的Document对象。 * @...

    TestWebservice.java

    Java 调用 c# webservice 接口 import javax.xml.namespace.QName; import javax.xml.soap.SOAPException; 接受返回参数,解析OUT数据

    jsr173_1.0_api.jar rasolver.jar xbean.jar xbean_xpath.jar xmlbeans-qname.jar

    jsr173_1.0_api.jar rasolver.jar xbean.jar xbean_xpath.jar xmlbeans-qname.jar xmlpublic.jar

    SAX解析XML

    xml.....&gt;时,会调用startDocument()方法,当读入的时候,由于它是个ElementNode,所以会调用startElement(String uri, String localName, String qName, Attributes attributes) 方法,其中第二个参数就是节点的...

    关于weblogic部署Java项目的包冲突问题的解决

    主要介绍了关于weblogic部署Java项目的包冲突问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Global site tag (gtag.js) - Google Analytics