2013-03-19 125 views
0

我必须提取标签的内容之间的内容,这里是我有:获取标签

<?xml version="1.0" encoding="utf-8"?> 
<string xmlns="http://tempuri.org/">iVBORw0KGgoAAAANSUhEUgAAAU0AAAD6CAYAAAAlSBW9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhehP1lnB3H1a4P75Ely8zMzOyYHcccjsNOHNtx7IDtJCbJgtEwM4tG0kgzghnRaEgMI2aWLNlisMVMlgxa73Wv2tvJ85xz ... 
</string> 

,这里是什么,我想:

iVBORw0KGgoAAAANSUhEUgAAAU0AAAD6CAYAAAAlSBW9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhehP1lnB3H1a4P75Ely8zMzOyYHcccjsNOHNtx7IDtJCbJgtEwM4tG0kgzghnRaEgMI2aWLNlisMVMlgxa73Wv2tvJ85xz ... 

我试着用这个正则表达式:

iframeContents.match(/<string[^>]*>(.*?)<\/string>/i); 

,但我不断收到字符串变量并没有更多的XML之一:

<string xmlns="http://tempuri.org/">iVBORw0KGgoAAAANSUhEUgAAAU0AAAD6CAYAAAAlSBW9AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhehP1lnB... 
+0

感觉就像它的时间来链接到最有名的答案在SO,再 - > http://stackoverflow.com/questions/1732348/regex-match- open-tags-except-xhtml-self-contained-tags – adeneo 2013-03-19 18:06:16

+0

如果这是在浏览器中,为什么不让浏览器为[你]做这件事(http://stackoverflow.com/questions/649614/xml-parsing-of-一个变量串式的JavaScript)。如果它的nodejs使用[libary](https://github.com/polotek/libxmljs/wiki/Element) – user1937198 2013-03-19 18:12:36

+0

感谢您的回复。我使用mootools,我不知道.find的等价物。我在文档中看不到任何东西 – 2013-03-19 18:20:23

回答

0

尝试如果不存在匹配

iframeContents.match(/<string[^>]*>([\s\S]*?)<\/string>/i)[1] 

匹配返回一个数组,或null
数组的第一个元素是整个匹配,第二个元素是由第一个捕获组()匹配的文本。

.与换行符不匹配,但[\s\S]

+0

非常感谢你!它完美的作品! – 2013-03-19 18:43:01

0

使用解析XML的方法从here

var parseXml; 

if (typeof window.DOMParser != "undefined") { 
    parseXml = function(xmlStr) { 
     return (new window.DOMParser()).parseFromString(xmlStr, "text/xml"); 
    }; 
} else if (typeof window.ActiveXObject != "undefined" && 
     new window.ActiveXObject("Microsoft.XMLDOM")) { 
    parseXml = function(xmlStr) { 
     var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async = "false"; 
     xmlDoc.loadXML(xmlStr); 
     return xmlDoc; 
    }; 
} else { 
    throw new Error("No XML parser found"); 
}) 

var xml = parseXml("..."); 
var text = xml.documentElement.firstChild.nodeValue;