0

我有一个包含键值对的 XML 文档,我想提取特定对的值。

我试过了:

var dat1 = xmlDoc.replace(/.*<d0>([^<]*)<\/d0>.*/, "$1");

以上为我提供了d0in 的值dat1,但对于后续的数据检索,它不会返回正确的值。

所以,第一个问题是:我可以使用什么方法通过使用正则表达式从 XML 文档中提取值(是的,我需要使用 regedt)?

上面使用的替换方法是否正确?

更新:我有以下 xml 字符串进来:

<dataVal><d0>123</d0><d1>456</d1></dataVal>

现在,内置的 xml 解析方法适用于我的 mozilla 和 chrome,但对于 IE,它无法解析字符串。例如,在 IE 上,如果我使用它会变为 null:

var dat1 = xmlDoc.getElementsByTagName('d0')[0].firstChild.nodeValue
4

1 回答 1

3

不建议使用正则表达式解析 XML。请改用 XML 解析器。使用 jQuery 的基本示例(显然需要 jQuery):

var xml = "<music><album>Beethoven</album></music>";

var result = $(xml).find("album").text();

使用浏览器内置 DOM 的示例:

<!DOCTYPE html>
<html>
    <body>
        <script>
            text = "<bookstore><book>";
            text = text + "<title>Galapagos</title>";
            text = text + "<author>Kurt Vonnegut</author>";
            text = text + "<year>1985</year>";
            text = text + "</book></bookstore>";
            var xmlDoc, bookTitle;
            if (window.DOMParser) {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(text, "text/xml");
            } else // Internet Explorer
            {
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(text);
            }
            bookTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].data;
            document.write(bookTitle);
        </script>
    </body>
</html>

关于为什么将正则表达式与 XML(和 HTML)一起使用是一个坏主意的强制性链接:RegEx match open tags except XHTML self-contained tags

于 2013-08-26T19:33:13.467 回答