python-3.x - 如何从服务器端的字符串中使用Elementtree XML解析?

标签 python-3.x xml sockets elementtree

我一直在尝试通过套接字从客户端向服务器发送xml字符串。这个想法是用ElementTree解析这个xml,然后使用获得的元素。
我可以成功地将字符串从客户端传递到服务器,但是无论我如何在客户端中构建xml(通过文件,三引号字符串或使用ElementTree包中的方法),在服务器中,我始终会收到错误消息

xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0


我已经验证了文件/字符串,但是我不确定在哪里出错,因为我真的没有直接使用XML文件的经验。
这是XML字符串
RemoteFunction = '''<?xml version="1.0"?>
<methodCall>
    <methodName>somemethodname</methodName>
    <params>
      <param>
         <value><string>somevalue</string></value>
      </param>
      <param>
         <value><i4>1</i4></value>
      </param>
      <param>
         <value><string>anothervalue</string></value>
      </param>
    </params>
</methodCall>'''
这是服务器中的连接处理程序函数
import xml.etree.ElementTree as ET

def client_handler( connection, address):
    connected = True
    while connected:
        msgLen = connection.recv(64).decode("utf-8")
        if msgLen:
            msgLen = int(msgLen)
            msg = connection.recv(msgLen).decode("utf-8")
            if msg == "!Disconnect":
                connected = False
            
            tree = ET.fromstring(msg)
注意:我知道Python3中有一个XMLRPC库,但是我不允许使用它。

最佳答案

试试这个。

from simplified_scrapy import SimplifiedDoc
def client_handler( connection, address):
    connected = True
    while connected:
        msgLen = connection.recv(64).decode("utf-8")
        if msgLen:
            msgLen = int(msgLen)
            msg = connection.recv(msgLen).decode("utf-8")
            if msg == "!Disconnect":
                connected = False

            doc = SimplifiedDoc(msg)
            print (doc.methodName.text, doc.selects('param>text()'))

关于python-3.x - 如何从服务器端的字符串中使用Elementtree XML解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64214207/

相关文章:

python - 听 channel 名称;由于 ' vs. "而失败

python - Azure计时器触发函数 ".past_due"返回false

Android elevation 和 setElevation 效果不一样

javascript - 如何在 SAPUI5 XML View 中使用 if-else 条件?

c++ - 使用 Boost Asio 同步 HTTPS POST

c - TCP套接字不接收c中的数据

Python:如何获取调用函数的文件的绝对路径?

python - 如何在 Python 中查找开放阅读框

PDF 到 XML 转换的 java 代码

c++ - UDP 在第一次后停止发送