以下代码段可以正常工作并打印<bar xmlns="x">bar</bar>
:
import ballerina/io;
public function main() {
final xml x1 = xml `<foo xmlns="x">
<bar>bar</bar>
</foo>`;
xmlns "x" as x;
io:println(x1[x:bar]);
}
但是,如果不涉及XML名称空间,如下面的代码片段所示,则会出现意外的编译错误:undefined symbol 'bar'
。
import ballerina/io;
public function main() {
final xml x1 = xml `<foo>
<bar>bar</bar>
</foo>`;
// compilation error: undefined symbol 'bar'
io:println(x1[bar]);
}
没有名称空间时如何访问XML元素?例如,xmlns "" as x;
也是一个编译错误。
我正在使用芭蕾舞女演员1.1.0。
要使用[]语法而不使用xml名称空间前缀,可以使用字符串文字来指定所需的元素。这称为扩展形式,您可以在其中用花括号括起来的名称空间作为前缀。如果没有定义名称空间,则可以忽略名称空间前缀,而只使用元素名称。
import ballerina/io;
public function main() {
final xml x1 = xml `<foo>
<bar>bar</bar>
</foo>`;
// simple element name
io:println(x1["bar"]);
final xml x2 = xml `<foo>
<ns:bar xmlns:ns="ns.uri.com">bar</ns:bar>
</foo>`;
// xml element name in expanded form
io:println(x2["{ns.uri.com}bar"]);
// We can also define the namespace prefix and use it to access
xmlns "ns.uri.com" as ns;
io:println(x2[ns:bar]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句