0

我对python很陌生。我现在如何在 Java 中编组/解组对象。我正在寻找类似我们在 Java 中所做的事情。喜欢:

JAXBContext jaxbContext = JAXBContext.newInstance(com.Request1.class);
                Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                dbf.setNamespaceAware(true);
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document doc = db.parse(new InputSource(new StringReader(message)));

                requestStr2 = (com.Request1) unmarshaller.unmarshal(doc);

其中 Request1 有 @XmlRootElement 注释。

我不想写多个元素、子元素等,因为我有非常复杂的 xsd 结构。我想通过generateDS从xsd生成类,然后从数据库初始化它并序列化为xml文件

我看到了 pyxser,但它只在 python 2 上。哪些模块可以帮助我?谢谢

4

1 回答 1

0

generateDS生成的python 模块可以从文件或字符串中解析 XML 模式的 XML 实例。generateDS 模块支持复杂的 XML Schema,包括复杂类型、抽象类型、枚举列表、混合内容等。

例如,这里是generateDS从people.xsd生成名为people.py的 python 模块的命令。

python generateDS.py -o people.py people.xsd

在 Windows 上,有一个 generateDS.exe 包装器,可以称为快捷方式:

generateDS.exe -o people.py people.xsd

这是一个符合people.xsd模式的示例 XML 实例。

<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <person id="1">
        <name>Alberta</name>
    </person> 
    <person id="2">
        <name>Bernardo</name>
    </person> 
    ...
</people>

以下是用于解析符合 XML 模式的名为people.xml的文件中的上述 XML 实例的 python 片段。parse() 函数从文件中解析 XML 文档,并为与元素关联的类创建对象结构。

import people as p
people = p.parse("people.xml", silence=True)
# iterate over each person in the collection
for person in people.get_person():
    print(person.name)

如果要从字符串变量中解析,xml则对其调用 parseString() 函数。

people = p.parseString(xml, silence=True)

请注意,如果 XML 内容包含编码声明,则必须使用字节输入,例如执行以下操作。

people = p.parseString(str.encode(xml), silence=True)

有关从 XML 模式创建 python 模块的详细信息(和更多示例),请参阅教程。

于 2020-12-03T15:39:08.457 回答