所以我有这个XML代码
<book>
<bookname>book1</bookname>
<author>authorman</author>
</book>
<book>
<bookname>book2</bookname>
<author>authorperson</author>
</book>
,我希望能够根据作者的名字使用作者的名字,反之亦然,然后使用JavaScript将其分配给变量。 我试图避免使用服务器端编程,而只想使用JavaScript。 这是我第一次在这里发帖,因为我是一名刚学会编程的高中生。
答案 0 :(得分:1)
您可以将XMLHttpRequest()
responseType
属性设置为"document"
,将overrideMimeType()
设置为"text/html"
以将HTML #document
设置为{{1} }在response
处理程序中。
创建一个函数,该函数期望将普通对象作为参数传递,其属性为load
或"author"
,其值设置为"bookname"
{{ 1}}元素textContent
或XML
进行匹配。迭代<book>
个元素中的<bookname>
和<author>
NodeList
,检查<book>
是否等于children
或HTMLCollection
,然后localName
与传递给函数的参数匹配,如果为true,则获取"bookname"
引用,如果"author"
是对象参数的属性,则对传递的textContent
使用parentElement
或{ {1}}如果将.querySelector()
作为参数传递,则返回匹配元素的"bookname"
或"author"
。
"author"
答案 1 :(得分:0)
尝试
var text, parser, xmlDoc;
text="<book>
<bookname>book1</bookname>
<author>authorman</author>
</book>
<book>
<bookname>book2</bookname>
<author>authorperson</author>
</book>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
console.log(xmlDoc.getElementsByTagName("book")[0].childNodes[0].nodeValue); //book1
console.log(xmlDoc.getElementsByTagName("book")[1].childNodes[0].nodeValue); //book2
答案 2 :(得分:0)
希望这对您有帮助:-
<script type="text/javascript">
var xml = "<xml>"+
"<book>"+
"<bookname>book1</bookname>"+
"<author>authorman</author>"+
"</book>"+
"<book>"+
"<bookname>book2</bookname>"+
"<author>author2</author>"+
"</book>"+
"</xml>";
parser = new DOMParser();
xmlDoc = parser.parseFromString(xml,"text/xml");
authors = xmlDoc.getElementsByTagName("author");
booknames = xmlDoc.getElementsByTagName("bookname");
var bookname = searchByAuthor('authorman', authors, booknames);
alert(bookname);
var authorname = searchByBookName('book2', authors, booknames);
alert(authorname);
function searchByAuthor(author_name, x, y){
for (i = 0; i < x.length; i++) {
if(x[i].childNodes[0].nodeValue == author_name){
return y[i].childNodes[0].nodeValue;
}
}
}
function searchByBookName(book_name, x, y){
for (i = 0; i < y.length; i++) {
if(y[i].childNodes[0].nodeValue == book_name){
return x[i].childNodes[0].nodeValue;
}
}
}
</script>