使用 jQuery 在 XML 中组织数据
Posted
技术标签:
【中文标题】使用 jQuery 在 XML 中组织数据【英文标题】:Organizing Data in XML with jQuery 【发布时间】:2012-03-19 18:54:18 【问题描述】:我需要将大量信息从我的网站发送到我的网络服务器。这些信息包含来自多个用户的数据(名字、姓氏等)。
在通过 AJAX 请求将这些信息发送到网络服务器之前,我必须将它们从表格中提取出来并以某种方式组织它们。
现在我正在考虑两种不同的可能性:
1:用javascript/jQuery将数据组织成一个XML文档并发送到网络服务器或...
XML 文档
<create>
<customer>
<first-name>foo</first-name>
<last-name>bar</last-name>
...
<customer>
</create>
2:将数据存储在一个字符串中,稍后使用 php 在网络服务器上组织它们。
字符串:
"first-name='foo';last-name='bar'"
我已经尝试过这个方法来创建一个 XML 文档...
var xmlDocument = $.parseXML('<create/>');
var customer = xmlDocument.createElement('customer');
xmlDocument.documentElement.appendChild(customer);
var firstName = xmlDocument.createElement('first-name');
xmlDocument.documentElement.appendChild(firstName);
...但它并没有真正奏效。我使用xmlDocument.find('first-name')
来检查它是否正确构建但失败了。也许我访问 XML 文档有误。
我也尝试过使用jQuery.parseXML();,但也没有用。
那么,创建/访问 XML 文档、创建/删除/编辑节点和文本节点以及在 JavaScript/jQuery 中设置/获取属性的正确方法是什么。
您能否建议我使用我提到的哪个机会?也许还有一个我还没有考虑过。如果您能添加一些示例代码,我将不胜感激。
【问题讨论】:
【参考方案1】:你应该做类似的事情
var xmlDocument = $('<create/>');
var customer = $('<customer/>');
xmlDocument.append(customer);
var firstName = $('<first-name/>').text('john');
xmlDocument.append(firstName);
对应的xml:
<create>
<customer></customer>
<first-name>john</first-name>
</create>
在这里找到一个元素xmlDocument.find('first-name').text()
小提琴http://jsfiddle.net/YpfmD/
这正是您创建 html 元素的方式(毕竟 html 是 XML)
如果你需要创建带有属性的元素,你可以这样做
$('<name/>', first: "john", second: "doe");
//this creates <name first="jhon" second="doe"></name>
【讨论】:
如何访问节点并获取值? @sebbl.sche justdoxmlDocument.find('first-name').text()
(我更新了我的答案)【参考方案2】:
为什么不能使用服务器端脚本(如 PHP)创建字符串(xml 或其他)?这样就容易多了。
但如果您需要使用 jquery/javascript,我建议您使用 JSON 方法。
看看这里:
jquery .serializeArray()
jquery .parseJSON
你可以试试这个?
【讨论】:
是否也可以在一个 JSON 对象中存储多个用户?比如:var obj = $.parseJSON('"user1" : "first-name" : "foo", "last-name" : "bar", "user2" : ... ');
JSON 只是您能想到的几乎任何类型的对象的字符串表示形式。它与 XML 非常相似,因为它以明确定义的结构存储数据,因此可以轻松地再次从中提取信息。它在 ajax 圈子中也很流行,因为大多数时候它占用的空间比 XML 少。去阅读它并玩弄它。以上是关于使用 jQuery 在 XML 中组织数据的主要内容,如果未能解决你的问题,请参考以下文章