有一个model_test.xml文件,如下:<?xml version="1.0" encoding="UTF-8"?>
<Export>
<Header CharacterSet="UTF-8" Date="2013-08-06" Time="14.05.21"/>
<Job Identifier="core_to_file_bcd_p" DateModified="2013-08-06">
<!--作业名-->
<Record Identifier="ROOT" Type="JobDefn" Readonly="0">
<!--作业环境变量定义-->
<Property Name="Name">core_to_file_bcd_p</Property>
<Property Name="NextID">1</Property>
<Property Name="Container">V0</Property>
<Collection Name="Parameters" Type="Parameters">
<SubRecord>
<!--数据库用户名参数--> <Property Name="Name">$USER_NAME_CORE</Property>
<!--数据库用户名参数提示--><Property Name="Prompt">USER_CORE</Property>
<!--数据库用户名参数缺省值--><Property Name="Default">$PROJDEF</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">$NLS_LANG</Property>
<Property Name="Prompt">NLS_LANG</Property>
<Property Name="Default">$PROJDEF</Property>
</SubRecord>
<SubRecord>
<!--数据库DSN参数--><Property Name="Name">$DSN_CORE</Property>
<Property Name="Prompt">DSN_CORE</Property>
<Property Name="Default">$PROJDEF</Property>
</SubRecord>
<SubRecord>
<!--数据库密码--><Property Name="Name"> $PASSWORD_CORE</Property>
<Property Name="Prompt">PASSWORD_CORE</Property>
<Property Name="Default">$PROJDEF</Property>
</SubRecord>
<SubRecord>
<!--文本文件输出目录参数--><Property Name="Name"> $DATASPACE_CORE_OUT</Property>
<Property Name="Prompt">DATASPACE_CORE_OUT</Property>
<Property Name="Default">$PROJDEF</Property>
</SubRecord>
</Collection>
<Collection Name="MetaBag" Type="MetaProperty">
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Value">#DSProjectARTOptions#</Property>
</SubRecord>
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">TraceMode</Property>
</SubRecord>
</Collection>
<Property Name="NULLIndicatorPosition">0</Property>
<Property Name="Category">\Jobs\Core_to_Ods\Core_to_CoreFile</Property>
</Record>
<!--数据库表结构--> <Record Identifier="V0S1P1" Type="CustomOutput" Readonly="0">
<Property Name="Name">DSLink4</Property>
<Property Name="Partner">V0S3|V0S3P1</Property>
<Collection Name="Properties" Type="CustomProperty">
<SubRecord>
<Property Name="Name">dboptions</Property>
<Property Name="Value">{user=#$USER_NAME_CORE#,password=#$PASSWORD_CORE#}</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">server</Property>
<Property Name="Value">#$DSN_CORE#</Property>
</SubRecord>
</Collection>
<!--定义表结构1 begin--> <Collection Name="Columns" Type="OutputColumn">
<SubRecord>
<Property Name="Name">BCDCUSNO</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDCOD</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDTYP</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDNO</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDCUSNAM</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>
</SubRecord>
<!--定义表结构1  end--> </Collection>
<Collection Name="MetaBag" Type="MetaProperty">
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">DiskWriteInc</Property>
<Property Name="Value">1048576</Property>
</SubRecord>
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">BufFreeRun</Property>
<Property Name="Value">50</Property>
</SubRecord>
</Collection>
<Property Name="LeftTextPos">252</Property>
<Property Name="TopTextPos">264</Property>
</Record>
<Record Identifier="V0S2" Type="CustomStage" Readonly="0">
<Property Name="Name">SF_ods_core_bcd</Property>
<Property Name="NextID">2</Property>
<Collection Name="Properties" Type="CustomProperty">
<SubRecord>
<Property Name="Name">charset</Property>
<Property Name="Value">NONE</Property>
</SubRecord>
</Collection>
<Property Name="NextRecordID">0</Property>
</Record>
<Record Identifier="V0S2P1" Type="CustomInput" Readonly="0">
<Property Name="Name">DSLink5</Property>
<Collection Name="Properties" Type="CustomProperty">
<SubRecord>
<!--传输方式定义--><Property Name="Name">schema</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">file</Property>
</SubRecord>
</Collection>
<Collection Name="MetaBag" Type="MetaProperty">
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">RTColumnProp</Property>
<Property Name="Value">0</Property>
</SubRecord>
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">SchemaFormat</Property>
<Property Name="Value">final_delim=end, delim=&apos;,&apos;, quote=double</Property>
</SubRecord>
</Collection>
<Property Name="TransactionSize">0</Property>
<Property Name="TXNBehaviour">0</Property>
<Property Name="EnableTxGroup">0</Property>
</Record>
<Record Identifier="V0S3" Type="TransformerStage" Readonly="0">
<Property Name="Name">TRF_01<!--Transformer定义-->
</Property>
<Property Name="NextID">3</Property>
<!--输入连接--><Property Name="InputPins">V0S3P1</Property>
<!--输出连接--><Property Name="OutputPins">V0S3P2</Property>
<Collection Name="MetaBag" Type="MetaProperty">
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">TrxGenCode</Property>
<Property Name="Value" PreFormatted="1">
                    </Property>
</SubRecord>
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">JobParameterNames</Property>
<Property Name="Value">DATA_DATE</Property>
</SubRecord>
</Collection>
<Property Name="ValidationStatus">0</Property>
<Property Name="StageType">CTransformerStage</Property>
<Property Name="BlockSize">0</Property>
</Record>
<Record Identifier="V0S3P1" Type="TrxInput" Readonly="0">
<Property Name="Name">DSLink4</Property>
<Property Name="Partner">V0S1|V0S1P1</Property>
<Property Name="LinkType">1</Property>
<Collection Name="MetaBag" Type="MetaProperty">
<SubRecord>
<Property Name="Owner">APT</Property>
<Property Name="Name">RTColumnProp</Property>
<Property Name="Value">0</Property>
</SubRecord>
<SubRecord>
<Property Name="Owner">APT</Property>
<!--传输方式定义--> <Property Name="Name">Schema</Property>
</SubRecord>
</Collection>
<Property Name="MultiRow">0</Property>
</Record>
<!--文本文件表结构--> <Record Identifier="V0S3P2" Type="TrxOutput" Readonly="0">
<Property Name="Name">DSLink5</Property>
<Property Name="Partner">V0S2|V0S2P1</Property>
<Property Name="SourceColumns">DSLink4.BCDCRTBR</Property>
<!--传输方式定义--> <Collection Name="Columns" Type="OutputColumn">
<SubRecord>
<Property Name="Name">BCDCUSNO</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">12</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDCOD</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">12</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDTYP</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">12</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDIDNO</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">12</Property>
</SubRecord>
<SubRecord>
<Property Name="Name">BCDCUSNAM</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">12</Property>
</SubRecord>
<!--定义表结构2 end--> </Collection>
<Property Name="LeftTextPos">468</Property>
<Property Name="TopTextPos">264</Property>
</Record>
</Job>
</Export>用jaxb-ri-2.2.6生成java类后,我想对该xml文件的内容做修改:
1、修改<!--定义表结构1 begin-->与<!--定义表结构1 end-->之间的数据库表定义内容,例如:<SubRecord>
<Property Name="Name">BCDCUSNO</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property>          </SubRecord>
<SubRecord>
<Property Name="Name">BCDIDCOD</Property>
<Property Name="Description">&lt;none&gt;</Property>
<Property Name="SqlType">1</Property> </SubRecord>1、想把<Property Name="Name">BCDIDCOD</Property>后面的Description的值修改为 客户编号;
2、想把<Property Name="SqlType">1</Property>修改为<Property Name="DateType">1</Property>;
3、想把<Property Name="Name">BCDIDCOD</Property>后面的Description的值修改为 客户证件号;
但是我怎么都写不好定位代码,更不用说修改成功,请各位大哥指点,对于dom4j我有点头晕。
我写的代码大致如下: SAXReader reader = new SAXReader();  Document document = reader.read("export/model_test.xml");
   List<Element> list2 = document.selectNodes("/DSExport/Job/Record/Collection[@Name='Columns' and @Type='OutputColumn']/SubRecord/Property[@Name='Description']");
  Iterator iter2=list2.iterator();
     while(iter2.hasNext()){
     Element DescElement=(Element)iter2.next();
     List list3=DescElement.content();
     Iterator iter3=list3.iterator();;
     System.out.println(list3.size());
     while(iter3.hasNext()){
      //Element el=(Element)iter3.next();
      //Property pr= (Property)iter3.next();
      System.out.println(iter3.next());   }
      //if(attribute.getValue().equals("Description"))
     // DescElement.setText("MyTest");
     }