2013-05-18 21 views
1

我使用的XML对于<脚本>库W3C DOM解析器可用here。 (这是因为我在.NET CLI Jint程序中使用js代替浏览器。)返回使用Javascript编辑的XML字符串

我的问题是,我使用DOMImplementation.loadXML()函数编辑XML,然后编辑一个节点值,然后我要检索的字符串所有的XML包括修改的一个:

//instantiate the W3C DOM Parser 
var parser = new DOMImplementation(); 

//load the XML into the parser and get the DOMDocument 
var domDoc = parser.loadXML($xmlData); 

//get the root node (in this case, it is ROOTNODE) 
var docRoot = domDoc.getDocumentElement(); 

// change "name" element value 
docRoot.getElementsByTagName("name").item(0).nodeValue="John"; 

// try to retreive all the XML including the changed one 
$xmlData=docRoot.getXML(); 

示例XML:

<name>Carlos</name> 

所有作品,除了最后一行好:

docRoot.getXML(); 

其中只返回原始XML作为字符串,而不是修改后的。

任何想法如何可以检索所有的XML作为字符串,包括修改?

+0

嘿RandomGuy,对不起,感到抱歉稍微偏离主题:我想问你如何设法在Jint中导入DOMImplementation。我尝试过,但总是出于某种原因,例如,“警报”未知。您是否通过任何方式改变了信息来源以使其起作用?非常感谢:) –

+0

你的意思是我如何在Jint中导入< script >库的XML?那么我用这个方法:http://stackoverflow.com/questions/7059140/how-do-i-load-a-javascript-file-with-jint-in-c/16617805#16617805。以这种方式加载tinyxmlsax.js和tinyxmlw3cdom.js。 – RandomGuy

+0

这基本上是我采取的方法,不幸的是,我一直执行脚本时得到异常。 附加信息:未定义DOMImplementation 另外,tinyxmlsax.js不包含任何DOMImplementation声明 –

回答

0

固定它替换:由

docRoot.getElementsByTagName("name").item(0).nodeValue="John"; 

docRoot.getElementsByTagName("name").item(0).firstChild.setNodeValue("John"); 

看来我需要调用firstChild在元素 “名称” 文本得到真正取代。使用此docRoot.getXML()返回包含修改后的所有XML代码。