锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲狠狠爱综合影院婷婷,亚洲福利一区二区,久久精品国产亚洲精品http://m.tkk7.com/fine/category/14612.htmlzh-cnWed, 10 Oct 2007 15:23:56 GMTWed, 10 Oct 2007 15:23:56 GMT60xml涓巋tml緇撳悎http://m.tkk7.com/fine/archive/2007/10/10/151724.htmlPeter PanPeter PanWed, 10 Oct 2007 05:57:00 GMThttp://m.tkk7.com/fine/archive/2007/10/10/151724.htmlhttp://m.tkk7.com/fine/comments/151724.htmlhttp://m.tkk7.com/fine/archive/2007/10/10/151724.html#Feedback0http://m.tkk7.com/fine/comments/commentRss/151724.htmlhttp://m.tkk7.com/fine/services/trackbacks/151724.html

聽1 < XML聽ID = a >
聽2 < namelist >
聽3 聽聽聽聽 < names >
聽4 聽聽聽聽聽聽聽聽 < name > aaaa </ name >
聽5 聽聽聽聽 </ names >
聽6 聽聽聽聽 < names >
聽7 聽聽聽聽聽聽聽聽 < name > bbbb </ name >
聽8 聽聽聽聽 </ names >
聽9 </ namelist >
10 </ XML >
11
12 < DIV聽datasrc = #a聽datafld = name ></ DIV >
13
14 < TABLE聽border = 1 聽DATASRC = #a >
15 < TR >
16 < TD >< DIV聽DATAFLD = name ></ DIV ></ TD ></ TD >
17 </ TR >
18 </ TABLE >


Peter Pan 2007-10-10 13:57 鍙戣〃璇勮
]]>
Digester 鐨勪嬌鐢?http://m.tkk7.com/fine/archive/2006/08/29/66360.htmlPeter PanPeter PanTue, 29 Aug 2006 01:46:00 GMThttp://m.tkk7.com/fine/archive/2006/08/29/66360.htmlhttp://m.tkk7.com/fine/comments/66360.htmlhttp://m.tkk7.com/fine/archive/2006/08/29/66360.html#Feedback0http://m.tkk7.com/fine/comments/commentRss/66360.htmlhttp://m.tkk7.com/fine/services/trackbacks/66360.htmlBelow are brief descriptions of all of the standard rules.

Creational

  • ObjectCreateRule: Creates an object of the specified class using its default constructor and pushes it onto the stack; it is popped when the element completes. The class to instantiate can be given through a class object or the fully-qualified class name.

  • FactoryCreateRule: Creates an object using a specified factory class and pushes it onto the stack. This can be useful for classes that do not provide a default constructor. The factory class must implement the org.apache.commons.digester.ObjectCreationFactory interface.

Property Setters

  • SetPropertiesRule: Sets one or several named properties in the top-level bean using the values of named XML element attributes. Attribute names and property names are passed to this rule in String[] arrays. (Typically used to handle XML constructs like <article page="10">.)

  • BeanPropertySetterRule: Sets a named property on the top-level bean to the character data enclosed by the current XML element. (Example: <page>10</page>.)

  • SetPropertyRule: Sets a property on the top-level bean. Both the property name, as well as the value to which this property will be set, are given as attributes to the current XML element. (Example: <article key="page" value="10" />.)

Parent/Child Management

  • SetNextRule: Pops the object on top of the stack and passes it to a named method on the object immediately below. Typically used to insert a completed bean into its parent.

  • SetTopRule: Passes the second-to-top object on the stack to the top-level object. This is useful if the child object exposes a setParent method, rather than the other way around.

  • SetRootRule: Calls a method on the object at the bottom of the stack, passing the object on top of the stack as argument.

Arbitrary Method Calls

  • CallMethodRule: Calls an arbitrary named method on the top-level bean. The method may take an arbitrary set of parameters. The values of the parameters are given by subsequent applications of the CallParamRule.

  • CallParamRule: Represents the value of a method parameter. The value of the parameter is either taken from a named XML element attribute, or from the raw character data enclosed by the current element. This rule requires that its position on the parameter list is specified by an integer index.

Specifying Rules in XML: Using the xmlrules Package

So far, we have specified the patterns and rules programmatically at compile time. While conceptually simple and straightforward, this feels a bit odd: the entire framework is about recognizing and handling structure and data at run time, but here we go fixing the behavior at compile time! Large numbers of fixed strings in source code typically indicate that something is being configured (rather than programmed), which could be (and probably should be) done at run time instead.

The org.apache.commons.digester.xmlrules package addresses this issue. It provides the DigesterLoader class, which reads the pattern/rule-pairs from an XML document and returns a digester already configured accordingly. The XML document configuring the Digester must comply with the digester-rules.dtd, which is part of the xmlrules package.

Below is the contents of the configuration file (named rules.xml) for the example application. I want to point out several things here.

Patterns can be specified in two different ways: either as attributes to each XML element representing a rule, or using the <pattern> element. The pattern defined by the latter is valid for all contained rule elements. Both ways can be mixed, and <pattern> elements can be nested -- in either case, the pattern defined by the child element is appended to the pattern defined in the enclosing <pattern> element.

The <alias> element is used with the <set-properties-rule> to map an XML attribute to a bean property.

Finally, using the current release of the Digester package, it is not possible to specify the BeanPropertySetterRule in the configuration file. Instead, we are using the CallMethodRule to achieve the same effect, as explained above.

				<?xml version="1.0"?>

<digester-rules>
   <object-create-rule pattern="catalog" classname="Catalog" />
   <set-properties-rule pattern="catalog" >
      <alias attr-name="library" prop-name="library" />
   </set-properties-rule>

   <pattern value="catalog/book">
      <object-create-rule classname="Book" />
      <call-method-rule pattern="author" methodname="setAuthor"
	                paramcount="0" />
      <call-method-rule pattern="title" methodname="setTitle" 
	                paramcount="0" />
      <set-next-rule methodname="addBook" />
   </pattern>

   <pattern value="catalog/magazine">
      <object-create-rule classname="Magazine" />

      <call-method-rule pattern="name" methodname="setName" paramcount="0" />

      <pattern value="article">
         <object-create-rule classname="Article" />
         <set-properties-rule>
            <alias attr-name="page" prop-name="page" />
         </set-properties-rule>    
         <call-method-rule pattern="headline" methodname="setHeadline" 
		           paramcount="0" />
         <set-next-rule methodname="addArticle" />
      </pattern>

      <set-next-rule methodname="addMagazine" /> 
   </pattern>
</digester-rules>
		

Since all the actual work has now been delegated to the Digester and DigesterLoader classes, the driver class itself becomes trivially simple. To run it, specify the catalog document as the first command line argument, and the rules.xml file as the second. (Confusingly, the DigesterLoader will not read the rules.xml file from a File or an org.xml.sax.InputSource, but requires a URL -- the File reference in the code below is therefore transformed into an equivalent URL.)

				import org.apache.commons.digester.*;
import org.apache.commons.digester.xmlrules.*;

import java.io.*;
import java.util.*;

public class XmlRulesDriver {
   public static void main( String[] args ) {
      try {

         File input = new File( args[0] );
         File rules = new File( args[1] );

         Digester digester = DigesterLoader.createDigester( rules.toURL() );

         Catalog catalog = (Catalog)digester.parse( input );
         System.out.println( catalog.toString() );
  
      } catch( Exception exc ) {
         exc.printStackTrace();
      }
   }
}
		


Peter Pan 2006-08-29 09:46 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 久久免费看黄a级毛片| 国产亚洲视频在线观看网址 | 成人性生交大片免费看无遮挡 | 国产精品1024在线永久免费 | 国产亚洲一区二区在线观看| 成人毛片免费观看视频在线| 91青青青国产在观免费影视| 免费一区二区无码东京热| 麻豆一区二区三区蜜桃免费| 国产成人免费网站| 亚洲高清美女一区二区三区| 亚洲综合色婷婷七月丁香| 久久久久国产精品免费看| 一级一级一级毛片免费毛片| 亚洲熟妇AV乱码在线观看| 亚洲一线产品二线产品| 亚洲国产av玩弄放荡人妇| 亚洲欧洲日韩国产一区二区三区| 91高清免费国产自产拍2021| 久久99毛片免费观看不卡| 三年在线观看免费观看完整版中文 | 亚洲最大av资源站无码av网址| 99久久免费精品国产72精品九九| 91精品视频在线免费观看| A级毛片内射免费视频| 日韩免费高清一级毛片在线| 免费被黄网站在观看| 国产亚洲日韩在线三区| 亚洲日本精品一区二区| 亚洲国产精品一区二区三区在线观看| 亚洲精品无码久久久久秋霞| 麻豆亚洲AV成人无码久久精品 | 午夜无码A级毛片免费视频| 蜜臀98精品国产免费观看| 国产大片51精品免费观看| 亚洲五月激情综合图片区| 黄色一级毛片免费| 91精品国产免费久久国语蜜臀| 午夜高清免费在线观看| 亚洲免费视频在线观看| 亚洲精品视频免费|