如何将XML的value属性赋值给Ballerina的Person记录name字段?
Ballerina中提取XML属性赋值给Person记录
需求背景
现有Ballerina的Person记录定义:
type Person record { string name; int age; };
以及对应的XML结构:
<Person> <name value="karen"/> <age>18</age> </Person>
需要将XML中<name>元素的value属性值赋值给Person记录的name字段,同时提取<age>元素的文本内容赋值给age字段。
实现代码
type Person record { string name; int age; }; public function main() { // 待解析的XML实例 xml personXml = xml `<Person> <name value="karen"/> <age>18</age> </Person>`; // 提取name元素的value属性值 string name = personXml.Person.name.@value; // 提取age元素的文本并转换为int类型(check处理转换错误) int age = check int:parse(personXml.Person.age.text()); // 构建Person记录 Person person = { name: name, age: age }; // 输出验证结果 io:println(person); }
关键说明
- 使用Ballerina的XML导航语法:
personXml.Person.name.@value直接定位到<name>元素的value属性,获取其字符串值。 - 对于
<age>元素,通过.text()方法提取其内部文本内容,再用int:parse()转换为整数类型,check关键字用于处理转换失败的异常场景。 - 如果XML结构存在不确定性(比如
<name>元素可能缺失),可以使用可选导航符?避免空指针错误:personXml.Person.name?@value,此时返回的是string?类型,需要处理空值情况。
内容的提问来源于stack exchange,提问作者Prakanth
相关产品推荐
相关产品推荐

