lxt69826400 发表于 2020-1-13 22:29

求助怎么用Python生成如下的xml内容

本帖最后由 lxt69826400 于 2020-1-13 22:30 编辑

求问如何用python生成?,查遍了网上各种资料,怎奈对lxml库和命名空间的理解太浅薄,怎么试都没法原因生成,求指导。
主要是卡在`xmlns:msdata="urn:schemas-microsoft-com:xml-msdata`这个位置,怎么都不对

```
<table>
      <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
                <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="table" msdata:UseCurrentLocale="true">
                        <xs:complexType>
                              <xs:choice minOccurs="0" maxOccurs="unbounded">
                                        <xs:element name="table">
                                                <xs:complexType>
                                                      <xs:sequence>
                                                                <xs:element name="index" type="xs:string" minOccurs="0"/>
                                                                <xs:element name="identifier" type="xs:string" minOccurs="0"/>
                                                      </xs:sequence>
                                                </xs:complexType>
                                        </xs:element>
                              </xs:choice>
                        </xs:complexType>
                </xs:element>
      </xs:schema>
</table>
```

huayugongju 发表于 2020-1-13 23:01

本帖最后由 huayugongju 于 2020-1-13 23:02 编辑

其实就是用代码 格式化XML字符串

def getSpace(level):
    space='\n'
    for i in range(level):
      space=space+'    '
    return space

# 格式化 XML 字符串#
def printXml(xml_str):
    #xml_list=xml_str.split('([>])')
    new_xml_list=""
    # head=xml_str
    # xml_str=xml_str
    xml_list=re.split(r'([>])',xml_str)
    xml_list = ["".join(i) for i in zip(xml_list,xml_list)]
    level=0
    for node in xml_list:
      if(re.match(r'<\?xml .*version.*\?>',node)):
            new_xml_list=new_xml_list+new_xml_list+node
            continue
      elif(re.match(r'<[^\?^/].*[^/]>',node)):
            new_xml_list=new_xml_list+getSpace(level)+node
            level=level+1
            continue
      elif(re.match(r'</.*[^/]>',node)):
            level=level-1
            new_xml_list=new_xml_list+getSpace(level)+node
            continue
      elif(re.match(r'<[^/].*/>',node)):
            new_xml_list=new_xml_list+getSpace(level)+node
      elif(re.match(r'.+</.*[^/]>',node)):
            new_xml_list=new_xml_list+node
            level=level-1
      else:
            print(node)

    # print(new_xml_list)
    return new_xml_list


17609259621 发表于 2020-1-14 09:23

看看,学习学习!

rosoon 发表于 2020-1-14 09:34

好好看,好好学~~!!

会放电的皮卡丘 发表于 2020-1-14 10:05

看一下,学习了。谢谢
页: [1]
查看完整版本: 求助怎么用Python生成如下的xml内容