jQuery - 改变XML&将它(改变)传递给一个函数

时间:2013-05-14 18:28:34

标签: jquery sql xml parsexml

我在函数中有以下jQuery代码。

var msgXML = "<XMLInput><Source></Source><MessageText></MessageText><SendTime></SendTime><Destination></Destination><NotUsed></NotUsed></XMLInput>",
msgXMLDoc = $.parseXML(msgXML),
$msgXML = $( msgXMLDoc ),
$msgSource = $msgXML.find("Source"),
$msgText = $msgXML.find("MessageText"),
$msgSTime = $msgXML.find("SendTime"),
$msgDest = $msgXML.find("Destination");

在这个函数中,我需要对XML中的每个节点进行一些更改,完成后,将更改后的XML传递给ajax调用,该调用将XML作为SQL存储过程的输入。 / p>

在下面的代码中,我可以附加XML值

$msgXML.children(0).append($msgSource.text(mySource));
$msgXML.children(0).append($msgText.text(myMsg));
$msgXML.children(0).append($msgSTime.text(currTimeString));
$msgXML.children(0).append($msgDest.text(myDest));

但是它改变了XML结构(我没有设置字段<NotUsed></NotUsed>但必须传递它)并且在XML周围改变。这是我的第一个问题/问题。

理想的结构是:

<XMLInput>
<Source></Source>
<MessageText></MessageText>
<SendTime></SendTime>
<Destination></Destination>
<NotUsed></NotUsed>
</XMLInput>

如果将节点放在控制台日志中,则使用上面的附加内容可能会更改节点的值:

console.log("Out = " + $msgXML.find("Source").text());

然而,传递的数据并不是写入SQL表的内容。这是第二个问题。在控制台日志中,它显示为undefined或[object Object]。我可以显示(更改过的)文本,但我显然没有正确引用xml结构。我对每一件事做错了什么?

1 个答案:

答案 0 :(得分:1)

使用

$msgXML.find("Source").append(mySource);

而不是

$msgXML.children(0).append($msgSource.text(mySource));

(类似于其他部分)。 $msgXML.children(0)似乎引用了XMLInput元素,当您从xml文档节点开始时,该元素将是合乎逻辑的。