AS3 XML对象如果提供了无效数据,是否会抛出异常?

3

我记得 AS3 中的 XML 类在构造函数中如果使用非法的 XML 字符串就会抛出异常。但是现在我遇到了一种情况,即使不是有效的 XML 数据,XML 类也可以轻松处理任何类型的数据......

var xml:XML;
try
{
    xml = new XML("Some bogus string content.");
    _valid = true;
}
catch (err:Error)
{
    _valid = false;
}

我有点不明白,是否漏掉了什么??

更新: Qname 似乎为空,但又似乎不是,请看这里:

var qname:QName = xml.name();
if (!qname.localName)
{
    _valid = false;
}

...抛出了一个异常。显然qname为空!但是...

var qname:QName = xml.name();
if (!qname || !qname.localName)
{
    _valid = false;
}

...不会抛出任何异常。qname似乎不是null。WTH?

2个回答

2
XML类的构造函数使用顶层XML()函数将输入值转换为XML。而顶层XML()函数将字符串转换为XML表示形式,也可以转换其他类型的参数。详情请查看XML构造函数顶层XML()函数手册,了解哪些内容会被转换为XML,哪些会抛出异常。请注意,需要保留HTML标签。

2

你的示例应该返回一个没有名称且nodeKind等于"text"的XML对象。这就是XML中表示文本节点的方式。除了使用try/catch之外,你还可以检查name()。


谢谢!现在尝试使用xml.name()来弄清楚,但QName有点难搞,不是吗?(请参见我上面的编辑) - BadmintonCat
只需将其转换为字符串,它就会变为空 -“”。 - alxx
啊,算了吧!我发现是我的其他实现导致QName为空。我在错误的时间检查了它。现在正常工作了。 :) - BadmintonCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接