Próbuję pobrać węzeł xml według jego atrybutu.Czy istnieje sposób, aby uzyskać xml Exlement przez atrybut?
edit
Próbuję pobrać element jej wartością atrybutu xml przy użyciu javascript zamiast jQuery. Czy istnieje prosta metoda?
Próbuję pobrać węzeł xml według jego atrybutu.Czy istnieje sposób, aby uzyskać xml Exlement przez atrybut?
edit
Próbuję pobrać element jej wartością atrybutu xml przy użyciu javascript zamiast jQuery. Czy istnieje prosta metoda?
Musisz znaleźć najpierw listę elementów, a następnie filtr według ich atrybutów.
Sprawdź moje demo tutaj: http://jsfiddle.net/silkster/eDP5V/
jquery może to zrobić bardzo łatwo. http://think2loud.com/224-reading-xml-with-jquery/
Konstruuję xml w locie, jquery nie działa dobrze z IE. – Wenn
czuję, że to uzasadnia nową odpowiedź, ponieważ jest JQuery bezpłatny
document.getElementsByAttribute = function(attribute, value, tagName, parentElement) {
var children = ($(parentElement) || document.body).getElementsByTagName((tagName || '*'));
return $A(children).inject([], function(elements, child) {
var attributeValue = child.getAttribute(attribute);
if(attributeValue != null) {
if(!value || attributeValue == value) {
elements.push(child);
}
}
return elements;
});
}
został on wskazał mi, że napisałem złego scenariusza .. hehe czytać here
// document.getElementsByAttribute([string attributeName],[string attributeValue],[boolean isCommaHyphenOrSpaceSeparatedList:false])
document.getElementsByAttribute=function(attrN,attrV,multi){
attrV=attrV.replace(/\|/g,'\\|').replace(/\[/g,'\\[').replace(/\(/g,'\\(').replace(/\+/g,'\\+').replace(/\./g,'\\.').replace(/\*/g,'\\*').replace(/\?/g,'\\?').replace(/\//g,'\\/');
var
multi=typeof multi!='undefined'?
multi:
false,
cIterate=document.getElementsByTagName('*'),
aResponse=[],
attr,
re=new RegExp(multi?'\\b'+attrV+'\\b':'^'+attrV+'$'),
i=0,
elm;
while((elm=cIterate.item(i++))){
attr=elm.getAttributeNode(attrN);
if(attr &&
attr.specified &&
re.test(attr.value)
)
aResponse.push(elm);
}
return aResponse;
}
czy jesteś pewien, że jest to odpowiedź wolna od jquery? '$ (parentElement)' ...? – Brian
whoops! Patrzyłem na dwóch na tym samym forum .... http://www.codingforums.com/showthread.php?t=26744 Testowałem oba .. wydaje się pracować dla mnie. – rlemon
Więc nie dokładnie jQuery darmo, ale jQuery Lite na pewno - bez rozszerzeń/wtyczek/modułów ... – Brian
To jest naprawdę łatwe przy użyciu jQuery. Załóżmy, że mamy taki ciąg.
<document>
<value type="people">
<name>
John
</name>
</value>
<value type="vehicle">
<name>
Ford
</name>
</value>
</document>
Następnie
var xmlDocument = $.parseXML(str);
$(xmlDocument).find("value[type='people'] name").text()
Będziemy się ciąg 'John' Back.
Nie rób tego. To jest niegrzeczne. Staraj się mówić do elementu, zanim zaczniesz go chwytać według jego atrybutu. Poważnie, czy możesz rozwinąć swoje pytanie? Co próbowałeś i jakie były wyniki? –
Próbuję uzyskać element za pomocą javascript zamiast jquery.find ("node [id = '1']") – Wenn
Nie należy prefiksować tytułów "JavaScript:". Po to są tagi. –