【问题标题】:How to update the xml file using python and BeautifulSoup如何使用 python 和 BeautifulSoup 更新 xml 文件
【发布时间】:2020-08-13 12:17:11
【问题描述】:

我可以看到值正在更新,但是当我在 XMl 文件中检查它显示原始值时,如何通过编辑更新原始 XML 文件或创建一个新的 XML 文件进行编辑。这就是我正在做的事情

with open("C:/file/abcd.xml","r") as file_in:
    content = file_in.read()
soup = bs(content,"xml")

loc = re.compile(r'[A-Z]+-+[0-9]+/+SM+-+[1-9]$')
for i in soup.find_all('managedOb', dist=loc):
    locat=i.find('p',{'name':'modLoc'})
    locat.string="U.S.A"

这是我的 XML 标签的示例:

原创

<managedOb dist="AKAS-85409/MNOP-85409/SM-1" operation="OPEN">
      <p name="modLoc">India</p>
</managedOb >

我正在做的改变

<managedOb dist="AKAS-85409/MNOP-85409/SM-1" operation="OPEN">
          <p name="modLoc">U.S.A</p>
    </managedOb >

但我无法保存更改或创建包含更改的新文件。

【问题讨论】:

    标签: python-3.x xml beautifulsoup file-handling


    【解决方案1】:

    另一种方法

    from simplified_scrapy import SimplifiedDoc, utils
    
    # html = utils.getFileContent('C:/file/abcd.xml')
    html = '''
    <managedOb dist="AKAS-85409/MNOP-85409/SM-1" operation="OPEN">
          <p name="modLoc">India</p>
    </managedOb>
    '''
    doc = SimplifiedDoc(html)
    managedObs = doc.getElementsByReg(r'dist="[A-Z]+-[0-9]+/+[A-Z]+-[0-9]+/SM+-+[1-9]"',tag='managedOb')
    for i in managedObs:
      locat = i.select('p@name=modLoc')
      locat.setContent('U.S.A') # Edit text
    utils.saveFile('C:/file/abcd_test.xml',doc.html)
    

    结果:

    <managedOb dist="AKAS-85409/MNOP-85409/SM-1" operation="OPEN">
          <p name="modLoc">U.S.A</p>
    </managedOb>
    

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多