`

缓存org.w3c.dom.Element类型,怎样使用另一个doc的元素

XML 
阅读更多

      今天对xml报文的头做缓存,第一次直接保存上一次生成好的doc中的Element元素到内存中,发现下次从内存中取出来的Element元素是null。

(代码不能直接使用,只做说明原理用)

缓存的代码

hmmeta.put(dataset.getDataSetName(),
                           new Meta((Element)ele, dataFields, newSql.toString()));

 使用的代码

 

this.fields=hmmeta.get(dsname).getFields();

 发现得到的fields是null。

 

尝试下面的方法

缓存的代码

hmmeta.put(dataset.getDataSetName(),
                           new Meta((NodeList)ele.getElementsByTagName("FIELD"), dataFields, newSql.toString()));

 引用的代码

 

NodeList fields = (NodeList)hmmeta.get(dsname).getNodeList();
for(int i=0;i<fields.getLength();i++){
      this.fields.appendChild(fields.item(i));
    }

 结果报异常

WRONG_DOCUMENT_ERR:   That   node   doesn't   belong   in   t   
  his   document.  

 意思是不能使用另一个doc的元素。

 

上网搜索得到下面的解决方法

缓存代码

hmmeta.put(dataset.getDataSetName(),
                           new Meta((NodeList)ele.getElementsByTagName("FIELD"), dataFields, newSql.toString()));

 使用缓存中数据

NodeList fields = (NodeList)hmmeta.get(dsname).getNodeList();
for(int i=0;i<fields.getLength();i++){
      this.fields.appendChild(outdoc.importNode(fields.item(i),true));
    }

 不知道各位有没有更好的方法。

分享到:
评论
1 楼 iXh 2009-02-20  
路过。。。

相关推荐

    java获取yahoo天气预报代码

    Java提供了`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`来创建一个解析器,然后使用`org.w3c.dom.Document`接口来解析XML文档。以下是一个基本的XML解析示例: ```java ...

    java读取 配置 xml文件

    在Java中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`这两个类来解析XML文件。 以下是一个简单的Java代码示例,演示如何读取XML配置文件: ```java import javax.xml....

    java 工具类

    以下是一个使用DOM解析XML的基本示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; ...

    domj工具类例子

    相比于W3C的DOM API,DOM4J更易于理解和使用,且在处理大型XML文档时性能更好。DOM4J支持SAX和DOM解析器,同时提供了一个XPath接口来查询XML结构。 2. **基本操作** - **解析XML**:使用`DocumentBuilder`或`...

    删除XML根节点下的某子节点

    一个XML文档通常有一个顶级的根元素,根元素下可以包含多个子元素。例如: ```xml 数据1 数据2 数据3 ``` 在这个例子中,`root`是根节点,`child1`、`child2`和`child3`是其子节点。如果我们想删除`child2`这...

    ext培训第四讲.doc 4/4

    - **内置缓存机制**:`Ext.get` 方法内部使用缓存机制来提高性能,如果多次获取同一个元素,则不会重复执行查找操作。 - **跨浏览器兼容性**:Element API 统一了不同浏览器之间的差异,使得开发者无需担心浏览器...

    xml读写

    - DOM解析:使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类读取XML,`TransformerFactory`和`Transformer`进行写入。 - SAX解析:通过`org.xml.sax.XMLReader`和`ContentHandler`接口...

    jdom的doc

    JDOM的核心理念在于将XML文档转换为一棵由Java对象组成的树形结构,每个节点代表XML文档的一个元素,如元素(Element)、属性(Attribute)或文本(Text)等。 JDOM的主要特点: 1. **纯Java实现**:JDOM完全由...

    jsoup获取网页正文

    使用CSS选择器可以精准定位元素,例如:`doc.select(".class-name")`选择所有class为"class-name"的元素。还可以使用`:not()`、`:has()`、`:contains()`等伪类进行复杂过滤。 6. **属性操作** 要获取或修改元素...

    网页考证样题-------------用于考证

    网页考证样题是一个重要的资源,尤其对于准备进行网页相关证书考试的考生来说,它提供了丰富的学习和练习材料。文档“网页考证样题.doc”很可能包含了各种类型的题目,旨在帮助考生熟悉考试格式,提升对网页设计、...

Global site tag (gtag.js) - Google Analytics