编辑现有XML文件并通过Jboss发送post

2024-04-20 05:37:20 发布

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

我有以下python方法,它运行xml文件并对其进行解析,然后尝试编辑字段:

    import requests
import xml.etree.ElementTree as ET
import random

def runThrougheTree():
    #open xml file
    with open("testxml.xml") as xml:
        from lxml import etree
        #parse
        parser = etree.XMLParser(strip_cdata=True, recover=True)
        tree = etree.parse("testxml.xml", parser)
        root= tree.getroot()
        #ATTEMPT to edit field - will not work as of now
        for ci in root.iter("CurrentlyInjured"):
            ci.text = randomCurrentlyInjured(['sffdgdg', 'sdfsdfdsfsfsfsd','sfdsdfsdfds'])
        #Overwrite initial xml file with new fields  - will not work as of now
        etree.ElementTree(root).write("testxml.xml",pretty_print=True, encoding='utf-8', xml_declaration=True)

        #send post (Jboss)
        requests.post('http://localhost:9000/something/RuleServiceImpl', data="testxml.xml)



def randomCurrentlyInjured(ran):
    random.shuffle(ran)
    return ran[0]







#-----------------------------------------------
if __name__ == "__main__":
    runThrougheTree()

已编辑的XML文件:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rule="http://somewebsite.com/" xmlns:ws="http://somewebsite.com/" xmlns:bus="http://somewebsite.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:Respond>
         <ws:busMessage>
            <bus:SomeRef>insertnumericvaluehere</bus:SomeRef>
            <bus:Content><![CDATA[<SomeDef>
  <SomeType>ABCD</Sometype>
  <A_Message>
      <body>
        <AnonymousField>
          <RefIndicator>1111111111111</RefIndicator>
          <OneMoreType>HIJK</OneMoreType>
          <CurrentlyInjured>ABCDE</CurentlyInjured>
        </AnonymousField>
      </body>
  </A_Message>
</SomeDef>]]></bus:Content>
            <bus:MessageTypeId>somenumericvalue</bus:MessageTypeId>
         </ws:busMessage>
      </ws:Respond>
   </soapenv:Body>
</soapenv:Envelope>

问题:

  1. 该字段未被编辑。你知道吗
  2. Jboss错误:原因:javax.xml.stream文件.XMLStreamException:ParseError位于[row,col]:[1,1] 消息:prolog中不允许内容。你知道吗

注意:我已经确保在第一个xml标记之前没有字符。你知道吗


Tags: 文件importtruehttp编辑wsasroot
1条回答
网友
1楼 · 发布于 2024-04-20 05:37:20

最后,我无法使用lxml,elementtree编辑字段/发布到Jboss,如下所示:

  1. 正如mzjn在评论中指出的那样,xml中有CDATA

  2. Jboss不喜欢解析后的请求,即使删除了CDATA标记。

解决方法/最终解决方案:我能够(有点乏味地)在脚本中使用.replace()成功地编辑明文,然后通过Jboss发送文章。我希望有一天这能帮助别人!你知道吗

相关问题 更多 >