xml - 如何深入到节点并替换 XML 文件中的特定属性
问题描述
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE POWERMART SYSTEM "powrmart.dtd">
<POWERMART CREATION_DATE="07/23/2020 14:17:08" REPOSITORY_VERSION="186.95">
<REPOSITORY NAME="INFA_RS" VERSION="186" CODEPAGE="UTF-8" DATABASETYPE="Oracle">
<FOLDER NAME="Ritwik_3473" GROUP="" OWNER="1998" SHARED="NOTSHARED" DESCRIPTION="" PERMISSIONS="rwx---r--" UUID="b64b79bc-fe5c-4880-ae9d-6bf4a37cde6d">
<SOURCE BUSINESSNAME ="" DATABASETYPE ="Oracle" DBDNAME ="oracledatabase" DESCRIPTION ="" NAME ="CITIES" OBJECTVERSION ="1" OWNERNAME ="DW_USER" VERSIONNUMBER ="1">
<SOURCEFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="1" FIELDPROPERTY ="0" FIELDTYPE ="ELEMITEM" HIDDEN ="NO" KEYTYPE ="NOT A KEY" LENGTH ="24" LEVEL ="0" NAME ="CUST_CITY_ID" NULLABLE ="NULL" OCCURS ="0" OFFSET ="0" PHYSICALLENGTH ="15" PHYSICALOFFSET ="0" PICTURETEXT ="" PRECISION ="15" SCALE ="0" USAGE_FLAGS =""/>
<SOURCEFIELD BUSINESSNAME ="" DATATYPE ="varchar2" DESCRIPTION ="" FIELDNUMBER ="2" FIELDPROPERTY ="0" FIELDTYPE ="ELEMITEM" HIDDEN ="NO" KEYTYPE ="NOT A KEY" LENGTH ="0" LEVEL ="0" NAME ="CUST_CITY" NULLABLE ="NULL" OCCURS ="0" OFFSET ="24" PHYSICALLENGTH ="30" PHYSICALOFFSET ="15" PICTURETEXT ="" PRECISION ="30" SCALE ="0" USAGE_FLAGS =""/>
<SOURCEFIELD BUSINESSNAME ="" DATATYPE ="varchar2" DESCRIPTION ="" FIELDNUMBER ="3" FIELDPROPERTY ="0" FIELDTYPE ="ELEMITEM" HIDDEN ="NO" KEYTYPE ="NOT A KEY" LENGTH ="0" LEVEL ="0" NAME ="CUST_STATE_PROVINCE" NULLABLE ="NULL" OCCURS ="0" OFFSET ="24" PHYSICALLENGTH ="40" PHYSICALOFFSET ="45" PICTURETEXT ="" PRECISION ="40" SCALE ="0" USAGE_FLAGS =""/>
<SOURCEFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="4" FIELDPROPERTY ="0" FIELDTYPE ="ELEMITEM" HIDDEN ="NO" KEYTYPE ="NOT A KEY" LENGTH ="24" LEVEL ="0" NAME ="CUST_STATE_PROVINCE_ID" NULLABLE ="NULL" OCCURS ="0" OFFSET ="24" PHYSICALLENGTH ="15" PHYSICALOFFSET ="85" PICTURETEXT ="" PRECISION ="15" SCALE ="0" USAGE_FLAGS =""/>
<SOURCEFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="5" FIELDPROPERTY ="0" FIELDTYPE ="ELEMITEM" HIDDEN ="NO" KEYTYPE ="NOT A KEY" LENGTH ="24" LEVEL ="0" NAME ="COUNTRY_ID" NULLABLE ="NULL" OCCURS ="0" OFFSET ="48" PHYSICALLENGTH ="15" PHYSICALOFFSET ="100" PICTURETEXT ="" PRECISION ="15" SCALE ="0" USAGE_FLAGS =""/>
</SOURCE>
<TARGET BUSINESSNAME ="" CONSTRAINT ="" DATABASETYPE ="Oracle" DESCRIPTION ="" NAME ="CITIES_TGT" OBJECTVERSION ="1" TABLEOPTIONS ="" VERSIONNUMBER ="1">
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="1" KEYTYPE ="NOT A KEY" NAME ="CUST_CITY_ID" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="15" SCALE ="0"/>
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="varchar2" DESCRIPTION ="" FIELDNUMBER ="2" KEYTYPE ="NOT A KEY" NAME ="CUST_CITY" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="30" SCALE ="0"/>
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="varchar2" DESCRIPTION ="" FIELDNUMBER ="3" KEYTYPE ="NOT A KEY" NAME ="CUST_STATE_PROVINCE" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="40" SCALE ="0"/>
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="4" KEYTYPE ="NOT A KEY" NAME ="CUST_STATE_PROVINCE_ID" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="15" SCALE ="0"/>
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="number" DESCRIPTION ="" FIELDNUMBER ="5" KEYTYPE ="NOT A KEY" NAME ="COUNTRY_ID" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="15" SCALE ="0"/>
<TARGETFIELD BUSINESSNAME ="" DATATYPE ="varchar2" DESCRIPTION ="" FIELDNUMBER ="6" KEYTYPE ="NOT A KEY" NAME ="COUNTRY_NAME" NULLABLE ="NULL" PICTURETEXT ="" PRECISION ="40" SCALE ="0"/>
</TARGET>
<MAPPING DESCRIPTION ="" ISVALID ="YES" NAME ="Query_to_file" OBJECTVERSION ="1" VERSIONNUMBER ="1">
<TRANSFORMATION DESCRIPTION ="" NAME ="SQ_CITIES" OBJECTVERSION ="1" REUSABLE ="NO" TYPE ="Source Qualifier" VERSIONNUMBER ="1">
<TRANSFORMFIELD DATATYPE ="double" DEFAULTVALUE ="" DESCRIPTION ="" NAME ="CUST_CITY_ID" PICTURETEXT ="" PORTTYPE ="INPUT/OUTPUT" PRECISION ="15" SCALE ="0"/>
<TRANSFORMFIELD DATATYPE ="string" DEFAULTVALUE ="" DESCRIPTION ="" NAME ="CUST_CITY" PICTURETEXT ="" PORTTYPE ="INPUT/OUTPUT" PRECISION ="30" SCALE ="0"/>
<TRANSFORMFIELD DATATYPE ="string" DEFAULTVALUE ="" DESCRIPTION ="" NAME ="CUST_STATE_PROVINCE" PICTURETEXT ="" PORTTYPE ="INPUT/OUTPUT" PRECISION ="40" SCALE ="0"/>
<TRANSFORMFIELD DATATYPE ="double" DEFAULTVALUE ="" DESCRIPTION ="" NAME ="CUST_STATE_PROVINCE_ID" PICTURETEXT ="" PORTTYPE ="INPUT/OUTPUT" PRECISION ="15" SCALE ="0"/>
<TRANSFORMFIELD DATATYPE ="double" DEFAULTVALUE ="" DESCRIPTION ="" NAME ="COUNTRY_ID" PICTURETEXT ="" PORTTYPE ="INPUT/OUTPUT" PRECISION ="15" SCALE ="0"/>
<TABLEATTRIBUTE NAME ="Sql Query" VALUE ="select * from CITIES_SRC"/>
<TABLEATTRIBUTE NAME ="User Defined Join" VALUE =""/>
<TABLEATTRIBUTE NAME ="Source Filter" VALUE =""/>
<TABLEATTRIBUTE NAME ="Number Of Sorted Ports" VALUE ="0"/>
<TABLEATTRIBUTE NAME ="Tracing Level" VALUE ="Normal"/>
<TABLEATTRIBUTE NAME ="Select Distinct" VALUE ="NO"/>
<TABLEATTRIBUTE NAME ="Is Partitionable" VALUE ="NO"/>
<TABLEATTRIBUTE NAME ="Pre SQL" VALUE =""/>
<TABLEATTRIBUTE NAME ="Post SQL" VALUE =""/>
<TABLEATTRIBUTE NAME ="Output is deterministic" VALUE ="NO"/>
<TABLEATTRIBUTE NAME ="Output is repeatable" VALUE ="Never"/>
</TRANSFORMATION>
<INSTANCE DESCRIPTION ="" NAME ="CITIES_TGT" TRANSFORMATION_NAME ="CITIES_TGT" TRANSFORMATION_TYPE ="Target Definition" TYPE ="TARGET"/>
<INSTANCE DBDNAME ="oracledatabase" DESCRIPTION ="" NAME ="CITIES" TRANSFORMATION_NAME ="CITIES" TRANSFORMATION_TYPE ="Source Definition" TYPE ="SOURCE"/>
<INSTANCE DESCRIPTION ="" NAME ="SQ_CITIES" REUSABLE ="NO" TRANSFORMATION_NAME ="SQ_CITIES" TRANSFORMATION_TYPE ="Source Qualifier" TYPE ="TRANSFORMATION">
<ASSOCIATED_SOURCE_INSTANCE NAME ="CITIES"/>
</INSTANCE>
<CONNECTOR FROMFIELD ="CUST_CITY_ID" FROMINSTANCE ="SQ_CITIES" FROMINSTANCETYPE ="Source Qualifier" TOFIELD ="CUST_CITY_ID" TOINSTANCE ="CITIES_TGT" TOINSTANCETYPE ="Target Definition"/>
<CONNECTOR FROMFIELD ="CUST_CITY" FROMINSTANCE ="SQ_CITIES" FROMINSTANCETYPE ="Source Qualifier" TOFIELD ="CUST_CITY" TOINSTANCE ="CITIES_TGT" TOINSTANCETYPE ="Target Definition"/>
<CONNECTOR FROMFIELD ="CUST_STATE_PROVINCE" FROMINSTANCE ="SQ_CITIES" FROMINSTANCETYPE ="Source Qualifier" TOFIELD ="CUST_STATE_PROVINCE" TOINSTANCE ="CITIES_TGT" TOINSTANCETYPE ="Target Definition"/>
<CONNECTOR FROMFIELD ="CUST_STATE_PROVINCE_ID" FROMINSTANCE ="SQ_CITIES" FROMINSTANCETYPE ="Source Qualifier" TOFIELD ="CUST_STATE_PROVINCE_ID" TOINSTANCE ="CITIES_TGT" TOINSTANCETYPE ="Target Definition"/>
<CONNECTOR FROMFIELD ="COUNTRY_ID" FROMINSTANCE ="SQ_CITIES" FROMINSTANCETYPE ="Source Qualifier" TOFIELD ="COUNTRY_ID" TOINSTANCE ="CITIES_TGT" TOINSTANCETYPE ="Target Definition"/>
<CONNECTOR FROMFIELD ="CUST_CITY_ID" FROMINSTANCE ="CITIES" FROMINSTANCETYPE ="Source Definition" TOFIELD ="CUST_CITY_ID" TOINSTANCE ="SQ_CITIES" TOINSTANCETYPE ="Source Qualifier"/>
<CONNECTOR FROMFIELD ="CUST_CITY" FROMINSTANCE ="CITIES" FROMINSTANCETYPE ="Source Definition" TOFIELD ="CUST_CITY" TOINSTANCE ="SQ_CITIES" TOINSTANCETYPE ="Source Qualifier"/>
<CONNECTOR FROMFIELD ="CUST_STATE_PROVINCE" FROMINSTANCE ="CITIES" FROMINSTANCETYPE ="Source Definition" TOFIELD ="CUST_STATE_PROVINCE" TOINSTANCE ="SQ_CITIES" TOINSTANCETYPE ="Source Qualifier"/>
<CONNECTOR FROMFIELD ="CUST_STATE_PROVINCE_ID" FROMINSTANCE ="CITIES" FROMINSTANCETYPE ="Source Definition" TOFIELD ="CUST_STATE_PROVINCE_ID" TOINSTANCE ="SQ_CITIES" TOINSTANCETYPE ="Source Qualifier"/>
<CONNECTOR FROMFIELD ="COUNTRY_ID" FROMINSTANCE ="CITIES" FROMINSTANCETYPE ="Source Definition" TOFIELD ="COUNTRY_ID" TOINSTANCE ="SQ_CITIES" TOINSTANCETYPE ="Source Qualifier"/>
<TARGETLOADORDER ORDER ="1" TARGETINSTANCE ="CITIES_TGT"/>
<ERPINFO/>
</MAPPING>
</FOLDER>
</REPOSITORY>
</POWERMART>
这是一个 informatica 映射的 XML 文件,我想使用 powershell 修改这个 XML 文件 我希望使用 powershell 更改 NAME ="CUST_CITY_ID" 的值和 NAME ="CUST_CITY_CODE"。我在深入到特定节点然后对特定属性使用替换功能时遇到问题。新更新我可以使用以下命令访问我想要的属性。我只需要为此添加替换功能
$xmlFilePath = 'C:\Users\ritsharma\Desktop\original.xml'
$xmlfile = get-content $xmlFilePath
$xml=New-Object -TypeName XML
$xml.load($xmlFilePath)
$xml.selectnodes("/POWERMART/REPOSITORY/FOLDER/MAPPING/TRANSFORMATION/TRANSFORMFIELD[@NAME=""ES_DISB_ST_CHG_DT""]")
解决方案
推荐阅读
- sql - 根据群组成员资格选择
- reactjs - 为什么 RxJS 间隔从最后一个值开始而不是从“0”开始?
- python - Pandas DataFrame 查询的过滤问题
- c++ - 我必须制作一个汽车经销商程序,但我不知道如何从文件中读取
- python - 如何检测点和矩形之间的碰撞方向?
- excel - 比较 2 个字段并获取第一个有效值,否则在 excel 中获取任何一个值
- go - 为什么 Go 中缺少 Bool 的 Token 类型?
- swift - 为什么我的 MKMapViewDelegate 没有反应,尽管找到了路线?
- spring-boot - 使用spring cloud gateway的Rest api的速率限制不起作用
- flutter - 布尔值未在函数中更新