如何使用lxml库删除xml负载中的所有“\n”

2024-09-27 09:37:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图更改xml文件中的文本值,需要使用lxml库返回更新后的xml内容。我可以成功地更新该值,但是更新的xml文件包含“\n”(下一行)字符,如下所示。在

输出:

<?xml version='1.0' encoding='ASCII'?>\n<Order>\n   <content>\n <sID>123</sID>\n   <spNumber>UserTemp</spNumber>\n  <client>ARRCHANA</client>\n <orderType>Dashboard</orderType>\n </content>\n
<content>\n <sID>111</sID>\n   <spNumber>UserTemp</spNumber>\n  <client>ARRCHANA</client>\n <orderType>Dashboard</orderType>\n </content>\n
</Order>

注意:我没有格式化上面的xml输出,而是发布了如何从输出控制台获得它。在

输入:

^{pr2}$

此外,我还尝试使用删除输出xml文件中的\n字符

getValue = getValue.replace('\n','') 

但是,运气不好。在

下面的代码用于更新xml(标记),并尝试返回更新后的xml内容。在

Python代码:

    from lxml import etree
    from io import StringIO
    import six
    import numpy

    def getListOfNodes(location):
        f = open(location)
        xml = f.read()
        f.close()
        #print(xml)
        getXml = etree.parse(location)
        for elm in getXml.xpath('.//Order//content/client'):
            index='ARRCHANA'
            elm.text=index
        #with open('C:\\New folder\\temp.xml','w',newline='\r\n') as writeFile:

        #writeFile.write(str(etree.tostring(getXml,pretty_print=True, xml_declaration=True)))
        getValue=str((etree.tostring(getXml,pretty_print=True, xml_declaration=True)))
        #getValue = getValue.replace('\n','') 
        #getValue=getValue.replace("\n","<br/>")
        print(getValue)
        return getValue

当我试图通过firefox浏览器打开响应负载时,它会显示以下错误消息:

XML Parsing Error: no element found Location:

file:///C:/New%20folder/Confidential.xml Line Number 1, Column 1:

当它在xml文件中找到“\n”字符时,它表示“在xml文件的第1行第1列中找不到位置”。在

有人能帮助我更好的方法来更新文本值,并且不需要任何额外的字符就返回它。在


Tags: 文件importclienttrueorderxmlcontent字符

热门问题