将解析的XML数据绑定到AngularJS变量

时间:2017-04-20 10:35:27

标签: javascript angularjs xml

我试图将XML数据绑定到AngularJS中的变量。

我的服务返回的数据是XML格式

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
&lt;Response&gt;&#xD;
  &lt;Firstname&gt;Johanna&lt;/Firstname&gt;&#xD;
&lt;/Response&gt;</string>

然后我使用x2js解析xml并返回:

var jsonResponse = x2js.xml_str2json(response);

enter image description here

最后我想将Firstname绑定到$ scope.firstname

这是我需要帮助的地方。我不知道如何绑定价值。 我尝试了什么:

$scope.firstname = jsonResponse.Response.Firstname;
> TypeError: Cannot read property 'Firstname' of undefined

$scope.firstname = jsonResponse.Object.Object.toString.__text.Response.Firstname
> TypeError: Cannot read property 'Object' of undefined

我尝试了一堆不同的组合来尝试获取Firstname,但没有一个正在运行。我要么得到上述错误或未定义的消息。

我做错了什么?请帮忙。

1 个答案:

答案 0 :(得分:1)

转换包含特殊字符的xml字符串需要在HTML中解码,而不是将其转换为JSON,请在下面的代码段中找到更多信息。

我为DecodeHTML添加了一个功能,您可以选择是否有其他选项来解码它。

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}
var x2js = new X2JS();
var xmlstring = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">&lt;Response&gt;&#xD;&lt;Firstname&gt;Johanna&lt;/Firstname&gt;&#xD;&lt;/Response&gt;</string>';

var formattedXML = decodeHtml(xmlstring);
var xmlTOjson = x2js.xml_str2json(formattedXML);

var FirstName = xmlTOjson.string.Response.Firstname;

alert(FirstName);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/abdmob/x2js/master/xml2json.js"></script>