0

この xsd ファイルから:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"  
           targetNamespace="http://foo.org/FooIsNotBar" 
           elementFormDefault="qualified">
<xs:element name="Foo" type="xs:string"/> 
</xs:schema>

この XML を取得するために PyXB を使用したい:

<?xml version="1.0" ?>
<Foo xmlns="http://foo.org/FooIsNotBar">hello</Foo>

だから私はこれをしました:

pyxbgen -m test -u test.xsd # Where test.xsd is the above xsd file
echo -e "import test\\nprint test.Foo('Hello World').toxml()" | python

ns1残念ながら、不要なプレフィックスを持つ XML を取得します。

<?xml version="1.0" ?>
<ns1:Foo xmlns:ns1="http://foo.org/FooIsNotBar">Hello World</ns1:Foo>

ns1:これらのプレフィックスを削除したいと思います。どのように?

編集

このjaxbに関する質問は、それに関するいくつかのヒントを与えてくれますが、私の問題の解決策はまだ見つかりませんでした。

を使用してプレフィックスを設定できることを発見しましたtest.Namespace.setPrefix('foo')。残念ながら、プレフィックスを非表示にすることはできません。

汚い解決策はこれを行うことです:

import test
rmp = 'REMOVE_ME_PLEASE'
test.Namesapce.setPrefix(rmp)
print test.Foo('Hello World').toxml().replace(rmp + ':', '').replace(':' + rmp, '')
4

1 に答える 1

3

XML が無効になるため、プレフィックスを削除することはできません。この例のように、デフォルトの名前空間を設定することで非表示にすることができます:

import pyxb.utils.domutils
pyxb.utils.domutils.BindingDOMSupport.SetDefaultNamespace(test.Namespace)
于 2016-11-04T20:26:16.827 に答える