在MuleSoft DataWeave中按条件映射XML复杂元素值至变量
Hey there! Let's figure out how to map that AccessLevel value to your Access variable. Based on your input XML, here are a few practical ways to get this done:
First, let's recap your input XML for reference:
<main> <Complexelement1/> <Complexelement2> <name>SystemType</name> <value>100</value> </Complexelement2> <Complexelement2> <name>AdminId</name> <value>606</value> </Complexelement2> <Complexelement2> <name>AccessLevel</name> <value>200</value> </Complexelement2> </main>
If you're working with XML transformations, XSLT is a clean, standards-compliant way to handle this. This stylesheet targets exactly the Complexelement2 where name equals "AccessLevel" and assigns its value to the Access variable:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/main"> <output> <!-- Define the Access variable directly with the target value --> <xsl:variable name="Access" select="Complexelement2[name='AccessLevel']/value/text()"/> <!-- Use the variable elsewhere, or output it directly as needed --> <Access><xsl:value-of select="$Access"/></Access> </output> </xsl:template> </xsl:stylesheet>
When you run this against your input XML, it will output an XML document with an <Access> element containing 200 — exactly the value you need. The XPath query Complexelement2[name='AccessLevel']/value/text() zeroes in on the right node perfectly.
xml.etree.ElementTree If you're using Python to process the XML, the built-in xml.etree.ElementTree module makes this straightforward. Here's a quick script to extract the value into your Access variable:
import xml.etree.ElementTree as ET # Parse the input XML (you can also load from a file using ET.parse()) xml_content = """<main> <Complexelement1/> <Complexelement2> <name>SystemType</name> <value>100</value> </Complexelement2> <Complexelement2> <name>AdminId</name> <value>606</value> </Complexelement2> <Complexelement2> <name>AccessLevel</name> <value>200</value> </Complexelement2></main>""" root = ET.fromstring(xml_content) # Locate the Complexelement2 node with name="AccessLevel" access_level_node = root.find(".//Complexelement2[name='AccessLevel']") # Extract the value into the Access variable (with error handling) if access_level_node is not None: Access = access_level_node.find("value").text print(f"Access variable value: {Access}") # Prints "Access variable value: 200" else: Access = None # Handle the case where AccessLevel isn't present in the XML
This script uses an XPath query to find the correct node, then pulls out the value text. We added a check to avoid errors if the AccessLevel entry is missing from the XML.
If you're using a language or tool that supports XPath (like Java, C#, or even XML editors), you can use this simple expression to get the value instantly:
/main/Complexelement2[name='AccessLevel']/value/text()
This expression will return the text content of the value node under the Complexelement2 with name equal to "AccessLevel" — in your case, that's 200. You can assign this result directly to your Access variable in whatever tool you're working with.
内容的提问来源于stack exchange,提问作者Arpan K Sharma

