-2

私は次のようなxmlファイルを持っています:

<?xml version="1.0" encoding="utf-8"?>
  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

次のようにと<Import Project="$(ProjectName).targets" />の間 に線を追加したい</ImportGroup></Project>

<?xml version="1.0" encoding="utf-8"?>
  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
  <Import Project="$(ProjectName).targets" />
</Project>

その行が<Import Project="$(ProjectName).targets" />すでにファイルに存在する場合は、追加する必要はありません。

どうやってやるの?

4

2 に答える 2

2

質問はテキストファイルの行に基づいていますが、入力ファイルは明らかにXMLであるため、インポートが存在しない場合に実際にインポートを追加する場合は、次のことを試してください。

import xml.dom.minidom

importstring = "$(Projectname).targets"
filename = "test.xml"

tree = xml.dom.minidom.parse(filename)
Project = tree.getElementsByTagName("Project")[0]

for Import in Project.getElementsByTagName("Import"):
    if Import.getAttribute("Project") == importstring:
        break
else: # note this is else belongs to the for, not the if
    newImport = xml.dom.minidom.Element("Import")
    newImport.setAttribute("Project", importstring)
    Project.appendChild(newImport)

tree.writexml(open(filename, 'w'))
于 2012-09-05T07:11:26.993 に答える
2

選択したXMLパーサーを使用してファイルを解析し、関連するAPIを使用してファイルを操作し、書き戻します。

于 2012-09-05T06:05:59.327 に答える