搜索XML中的值并将元素复制到另一个文件中

时间:2019-04-12 19:47:22

标签: xml

我们有很多带appr的xml文件。 500000行,我们将其用于迁移。现在一些已经加载的对象出错了,我必须创建一个额外的xml文件。我需要搜索Alias>XXX</Alias>之间的一个值,并且需要将<File> to </File>中的元素复制到新的xml文件中。我需要在100个xml文件中搜索800个Alias条目。

我不是程序员,并试图用我的工具解决它。

示例xml

<Root>
<File>
 <OriginalFile>
  <TheDocFile>B-ELD1-0531-HS5E-20801KT7010-C.tif</TheDocFile>
  <TheDocFile>B-ELD1-0531-HS5E-20801KT7010-C.dwg</TheDocFile>
 </OriginalFile>
 <AgfaTitelhoek>
  <Alias>ELD1-0531-HS5E-20801KT7010</Alias>
  <Basiskalk>STXX520</Basiskalk>
  <Uitvoerder></Uitvoerder>
  <Tek.Naam>QualiTek</Tek.Naam>
  <Tek.Tel></Tek.Tel>
  <Tek.Datum>20170505</Tek.Datum>
  <Nag.Naam>DE WAELE D.</Nag.Naam>
  <Nag.Tel>7823</Nag.Tel>
  <Nag.Datum>20180416</Nag.Datum>
  <Goedk.Naam></Goedk.Naam>
  <Goedk.Tel></Goedk.Tel>
  <Goedk.Datum></Goedk.Datum>
  <Titellijn1>BEVEILIGINGSLIJST</Titellijn1>
  <Titellijn2>VERDEELBORD 20.801</Titellijn2>
  <VestGebouw>0531</VestGebouw>
  <Vestiging>05</Vestiging>
  <Gebouw>31</Gebouw>
  <PRCCode>ELD1</PRCCode>
  <PRECode>HS5E</PRECode>
  <FieGrpCode>----</FieGrpCode>
  <BwdCode>----</BwdCode>
  <Verdieping>20</Verdieping>
  <ZLS>L29</ZLS>
  <PVB>801</PVB>
  <Soort>KT</Soort>
  <Volgnummer>7010</Volgnummer>
  <Bordnummer></Bordnummer>
  <Veldnummer></Veldnummer>
  <Plannummer></Plannummer>
  <Uitgave>C</Uitgave>
  <Lastenboeknr></Lastenboeknr>
  <Ontstaan></Ontstaan>
  <Landcode>BE</Landcode>
  <StatusPlan>As Built</StatusPlan>
  <Vakgebied>X</Vakgebied>
  <Kaft></Kaft>
  <UitgelAan></UitgelAan>
  <PageState>GeRegistreerd</PageState>
  <ReservedBy>*</ReservedBy>
  <KBL>B</KBL>
  <PGName>B-ELD1-0531-HS5E-20801KT7010</PGName>
  <PRName>B-ELD1-0531-HS5E-20801KT7010-C</PRName>
 </AgfaTitelhoek>
</File>
<File>
 <OriginalFile>
  <TheDocFile>B-EMG1-0531-M037-20145KT2001-O.tif</TheDocFile>
  <TheDocFile>B-EMG1-0531-M037-20145KT2001-O.dwg</TheDocFile>
 </OriginalFile>
 <AgfaTitelhoek>
  <Alias>EMG1-0531-M037-20145KT2001</Alias>
  <Basiskalk>STXX660</Basiskalk>
  <Uitvoerder></Uitvoerder>
  <Tek.Naam>QualiTek</Tek.Naam>
  <Tek.Tel></Tek.Tel>
  <Tek.Datum>19990823</Tek.Datum>
  <Nag.Naam>DE WAELE D.</Nag.Naam>
  <Nag.Tel>7823</Nag.Tel>
  <Nag.Datum>20180416</Nag.Datum>
  <Goedk.Naam></Goedk.Naam>
  <Goedk.Tel></Goedk.Tel>
  <Goedk.Datum></Goedk.Datum>
  <Titellijn1>VOORAANZICHT</Titellijn1>
  <Titellijn2>SCHAKELBORD 20.145</Titellijn2>
  <VestGebouw>0531</VestGebouw>
  <Vestiging>05</Vestiging>
  <Gebouw>31</Gebouw>
  <PRCCode>EMG1</PRCCode>
  <PRECode>M037</PRECode>
  <FieGrpCode>----</FieGrpCode>
  <BwdCode>----</BwdCode>
  <Verdieping>20</Verdieping>
  <ZLS>---</ZLS>
  <PVB>145</PVB>
  <Soort>KT</Soort>
  <Volgnummer>2001</Volgnummer>
  <Bordnummer></Bordnummer>
  <Veldnummer></Veldnummer>
  <Plannummer></Plannummer>
  <Uitgave>O</Uitgave>
  <Lastenboeknr></Lastenboeknr>
  <Ontstaan></Ontstaan>
  <Landcode>BE</Landcode>
  <StatusPlan>As Built</StatusPlan>
  <Vakgebied>X</Vakgebied>
  <Kaft>M037.B.03</Kaft>
  <UitgelAan></UitgelAan>
  <PageState>GeRegistreerd</PageState>
  <ReservedBy>*</ReservedBy>
  <KBL>B</KBL>
  <PGName>B-EMG1-0531-M037-20145KT2001</PGName>
  <PRName>B-EMG1-0531-M037-20145KT2001-O</PRName>
 </AgfaTitelhoek>
</File>
</Root>

在这种情况下,我需要搜索ELD1-0531-HS5E-20801KT7010并在<File> to /File>之间进行全部复制。 我知道所有800个别名号码。我无法运行该代码800次。 搜索字符串是这样的

  1. ELD1-0531-HS5E-20801KT7010
  2. ENR2-0504-0000-02901KT4011
  3. Z080-0535-MANU-00116VT6608

如果您查看<TheDocFile>B-EMG1-0531-M037-20145KT2001-O.tif</TheDocFile> 还涉及版本控制。这里我们有O(字母序列)。 我没有每个数字后面有多少版本的信息,因此必须在xml中进行排序。

如果可以将800个别名以某种方式放在txt文件中作为代码输入,那将是很好的。

来源: -一个文件夹中有很多xml文件 -大约有800行作为搜索条件的TXT文件

搜索条件: -搜索<Alias>XXX</Alias> -如果找到搜索条件,请复制<File> to /File>

中的整个元素

结果应为 -包含所有搜索结果的XML文件-<File> to /File>

也许您还有排序的解决方案,应该使用字段<TheDocFile>B-EMG1-0531-M037-20145KT2001-O.tif</TheDocFile>进行排序。这里有O版本。

希望这并不困难。 提前谢谢。

如果您需要更多信息,请随时询问。

0 个答案:

没有答案