首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript从xml文件中检索特定元素并返回其节点

如何使用javascript从xml文件中检索特定元素并返回其节点
EN

Stack Overflow用户
提问于 2017-03-23 16:27:00
回答 2查看 874关注 0票数 0

如何在javascript中从xml中检索数据。

data.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Lexical-Entry>
    <Synset>
        <Word val="aare"/>
        <SynsetRelation>
            <Relation att="iof" hypernym="thing" val="river"/>
        </SynsetRelation>
        <ID WordnetId="09186064" uw_id="1"/>
    </Synset>
    <Synset>
        <Word val="aarhus"/>
        <SynsetRelation>
            <Relation att="iof" hypernym="thing" val="city"/>
            <Relation att="equ" val="arhus"/>
        </SynsetRelation>
        <ID WordnetId="08762104" uw_id="2"/>
    </Synset>
    <Synset>
        <Word val="aaron"/>
        <SynsetRelation>
            <Relation att="icl" hypernym="abstract_thing" val="name"/>
            <Relation att="com" val="male"/>
            <Relation att="nam" val="person"/>
        </SynsetRelation>
        <ID WordnetId="0" uw_id="3"/>
    </Synset>
</Lexical-Entry>

test.html

代码语言:javascript
复制
<html>
<body>
    <div>
                <h1>Search Word</h1>
                <br/>
                <input type="text" name="SearchValue" placeholder="Enter a word" />
                <br/>
                <br/>
                <input type="submit"  value="Search"/>
            </div>

</body>
</html>

当用户输入一个单词来搜索ex:aaron时,它应该检索aaron synset的值。当用户输入单词时,它应该在data.xml中搜索该单词,然后检索aaron synset的值。

EN

回答 2

Stack Overflow用户

发布于 2017-03-23 17:06:22

没有完全理解您的问题,但是这段代码从Name节点值为aaron的xml字符串中提取Synset元素。

它应该会让你知道如何获取你需要的东西。如果不是,则在发布更多代码时说明您试图实现的方式和目标。

代码语言:javascript
复制
var xml = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><Lexical-Entry><Synset><Word val="aare"/><SynsetRelation><Relation att="iof" hypernym="thing" val="river"/></SynsetRelation><ID WordnetId="09186064" uw_id="1"/></Synset><Synset><Word val="aarhus"/><SynsetRelation><Relation att="iof" hypernym="thing" val="city"/><Relation att="equ" val="arhus"/></SynsetRelation><ID WordnetId="08762104" uw_id="2"/></Synset><Synset><Word val="aaron"/><SynsetRelation><Relation att="icl" hypernym="abstract_thing" val="name"/><Relation att="com" val="male"/><Relation att="nam" val="person"/></SynsetRelation><ID WordnetId="0" uw_id="3"/></Synset></Lexical-Entry>'

var parsedXml = (new window.DOMParser()).parseFromString(xml, 'text/xml')
var valueToLookFor = 'aaron';
var node = parsedXml.querySelector('Word[val="' + valueToLookFor +'"]').parentNode
票数 0
EN

Stack Overflow用户

发布于 2017-03-23 18:02:22

如果你重用this thread的代码,你可以实现它。

您将获得<Word val="aaron"/>的父节点。

下面的代码是丑陋的,因为原来的是。所以我建议你完全重做你自己的,但是你有这个想法。

代码语言:javascript
复制
Array.prototype.where = function(matcher) {
    var result = [];
    for (var i = 0; i < this.length; i++) {
        if (matcher(this[i])) {
            result.push(this[i]);
        }
    }
    return result;
};

function getElementsByAttribute(tag, attr, attrValue) {
    //Get elements and convert to array
    var elems = Array.prototype.slice.call(document.getElementsByTagName(tag), 0);
    
    //Matches an element by its attribute and attribute value
    var matcher = function(el) {
        return el.getAttribute(attr) == attrValue;
    };

    return elems.where(matcher);
}

var elems = getElementsByAttribute('Word', 'val', 'aaron');
for(var i = 0; i < elems.length; i++) {
  console.log(elems[i].parentNode);
  // !!! HERE IS YOUR XML NODE -> elems[i] !!!
}
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Lexical-Entry>
    <Synset>
        <Word val="aare"/>
        <SynsetRelation>
            <Relation att="iof" hypernym="thing" val="river"/>
        </SynsetRelation>
        <ID WordnetId="09186064" uw_id="1"/>
    </Synset>
    <Synset>
        <Word val="aarhus"/>
        <SynsetRelation>
            <Relation att="iof" hypernym="thing" val="city"/>
            <Relation att="equ" val="arhus"/>
        </SynsetRelation>
        <ID WordnetId="08762104" uw_id="2"/>
    </Synset>
    <Synset>
        <Word val="aaron"/>
        <SynsetRelation>
            <Relation att="icl" hypernym="abstract_thing" val="name"/>
            <Relation att="com" val="male"/>
            <Relation att="nam" val="person"/>
        </SynsetRelation>
        <ID WordnetId="0" uw_id="3"/>
    </Synset>
</Lexical-Entry>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42970690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档