Appcelerator Windows Phone XML 解析错误

Appcelerator Windows Phone XML Parsing Error

我已经开始使用 Appcelerator 在 Windows Phone 上进行开发。我正在使用 Android 的代码作为基础,而在这样做时我遇到了 XML 解析的特定问题。这是 XML 字符串:

<returnXml>
    <methodStatus>
        <statusType>success</statusType>
    </methodStatus>
    <parametersReturn />
</returnXml>

这是我正在尝试的代码 运行 :

var xml = Ti.XML.parseString(xmlString);
var statusType = xml.evaluate("/returnXml/methodStatus/statusType").item(0).text;

以上代码在 Android 上运行良好,但在 Windows Phone 上我得到:

TypeError: xml.evaluate is not a function

所以我尝试使用以下代码:

getElementsByTagName("statusType")

但是 Windows phone 似乎不支持这些功能,或者我在这里做错了。我应该做其他事情还是应该为 JavaScript 寻找外部 XML 解析器库?如有,请指导。

我们应该支持 Ti.XML.Document.evaluate 函数(和 getElementsByName)。要查看我们围绕 Ti.XML API 的单元测试,您可以查看此处:https://github.com/appcelerator/titanium_mobile_windows/blob/master/Examples/NMocha/src/Assets/ti.xml.test.js

我们可能没有测试您正在使用的 XPath 或 API 的变体。如果是这样,也许我们在那里测试的一些内容可以帮助您暂时解决问题,直到我们可以解决问题为止?在 JIRA 中提交 buh 报告并详细说明您正在使用的 SDK 版本会对您有所帮助:https://jira.appcelerator.org/secure/CreateIssue!default.jspa

现在,我已经创建了一个 PR,其中包含一个新的单元测试,试图重现您的问题:https://github.com/appcelerator/titanium_mobile_windows/pull/575如果您有改进该测试的建议,那将是一件好事。

我可以说您的代码片段在尝试访问文本值时应该会失败,因为用于获取 "text" 的 属性 是 textContent,所以它是:

var statusType = xml.evaluate("/returnXml/methodStatus/statusType").item(0).textContent;

http://docs.appcelerator.com/platform/latest/#!/api/Titanium.XML.Node-property-textContent

虽然您可以在 XPath 表达式中一次完成所有操作:

var statusType = xml.evaluate("/returnXml/methodStatus/statusType[1]/text()");