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()");
我已经开始使用 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()");