Skip to content
Snippets Groups Projects

XML Converter

Merged Alexander Schlemmer requested to merge f-xml-converter into dev
1 file
+ 37
2
Compare changes
  • Side-by-side
  • Inline
@@ -239,10 +239,10 @@ def test_namespace_xml(converter_registry):
xml_text = """
<root xmlns="default-namespace" xmlns:test="alternative-namespace">
<node1>
<node1 active="true">
Bla
</node1>
<node1>
<node1 active="true" size="45">
text
<node2 xmlns="sub-namespace">
<node3>
@@ -256,6 +256,7 @@ def test_namespace_xml(converter_registry):
</root>
"""
# Test unsupported xpath (containing text()):
converter = XMLTagConverter(yaml.safe_load("""
type: XMLTag
match_tag: "{default-namespace}root"
@@ -270,6 +271,7 @@ default_namespace: default
with pytest.raises(RuntimeError, match="Only standard xml nodes.*"):
converter.create_children(GeneralStore(), tag)
# Test complex xml using namespaces and text nodes:
converter = XMLTagConverter(yaml.safe_load("""
type: XMLTag
match_tag: "{default-namespace}root"
@@ -285,3 +287,36 @@ tags_as_children: false
assert children[0].value.strip() == "Bla"
assert children[1].name == "{default-namespace}node1[2]/text()"
assert children[1].value.strip() == "text"
# Check child generation of attributes:
converter = XMLTagConverter(yaml.safe_load("""
type: XMLTag
match_tag: "{default-namespace}root"
xpath: "default:node1"
default_namespace: default
attribs_as_children: true
text_as_children: false
tags_as_children: false
"""), "TestXMLTagConverter", converter_registry)
children = converter.create_children(GeneralStore(), tag)
assert len(children) == 3
assert children[0].name == "{default-namespace}node1[1]@active"
assert children[0].value.strip() == "true"
assert children[1].name == "{default-namespace}node1[2]@active"
assert children[1].value.strip() == "true"
assert children[2].name == "{default-namespace}node1[2]@size"
assert children[2].value.strip() == "45"
# Test setting nsmap entries:
converter = XMLTagConverter(yaml.safe_load("""
type: XMLTag
match_tag: "{default-namespace}root"
xpath: "//s:node2"
default_namespace: default
nsmap:
s: sub-namespace
"""), "TestXMLTagConverter", converter_registry)
children = converter.create_children(GeneralStore(), tag)
assert len(children) == 1
assert children[0].name == "{default-namespace}node1[2]/{sub-namespace}node2"
Loading