XML DOM - Установить узел
В этой главе мы изучим, как изменить значения узлов в объекте XML DOM. Значение узла можно изменить следующим образом -
var value = node.nodeValue;
Если узел является атрибутом, тогда переменная значения будет значением атрибута; если узел является текстовым узлом, это будет текстовое содержимое; если узел является элементом, он будет нулевым .
В следующих разделах будет продемонстрирована настройка значения узла для каждого типа узла (атрибут, текстовый узел и элемент).
Node.xml используется во всех следующих примерах, как показано ниже -
<Company>
<Employee category = "Technical">
<FirstName>Tanmay</FirstName>
<LastName>Patil</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Non-Technical">
<FirstName>Taniya</FirstName>
<LastName>Mishra</LastName>
<ContactNo>1234667898</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Management">
<FirstName>Tanisha</FirstName>
<LastName>Sharma</LastName>
<ContactNo>1234562350</ContactNo>
<Email>[email protected]</Email>
</Employee>
</Company>
Изменить значение текстового узла
Когда мы говорим об изменении значения элемента Node, мы имеем в виду редактировать текстовое содержимое элемента (который также называется текстовым узлом ). В следующем примере показано, как изменить текстовый узел элемента.
пример
В следующем примере (set_text_node_example.htm) XML-документ ( node.xml ) анализируется на объект XML DOM и изменяется значение текстового узла элемента. В этом случае отправьте электронное письмо каждому сотруднику на адрес [email protected] и распечатайте значения.
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
x = xmlDoc.getElementsByTagName("Email");
for(i = 0;i<x.length;i++) {
x[i].childNodes[0].nodeValue = "[email protected]";
document.write(i+');
document.write(x[i].childNodes[0].nodeValue);
document.write('<br>');
}
</script>
</body>
</html>
Исполнение
Сохраните этот файл как set_text_node_example.htm на пути к серверу (этот файл и node.xml должны находиться на одном пути на вашем сервере). Вы получите следующий вывод -
0) [email protected]
1) [email protected]
2) [email protected]
Изменить значение узла атрибута
В следующем примере показано, как изменить узел атрибута элемента.
пример
В следующем примере (set_attribute_example.htm) XML-документ ( node.xml ) преобразуется в объект XML DOM и изменяется значение узла атрибута элемента. В этом случае, Категория каждого Работника к админам-0, админы-1, админы-2 соответственно и вывести значение.
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(filename) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // code for IE5 and IE6 {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
</script>
</head>
<body>
<script>
xmlDoc = loadXMLDoc("/dom/node.xml");
x = xmlDoc.getElementsByTagName("Employee");
for(i = 0 ;i<x.length;i++){
newcategory = x[i].getAttributeNode('category');
newcategory.nodeValue = "admin-"+i;
document.write(i+');
document.write(x[i].getAttributeNode('category').nodeValue);
document.write('<br>');
}
</script>
</body>
</html>
Исполнение
Сохраните этот файл как set_node_attribute_example.htm на пути к серверу (этот файл и node.xml должны находиться на одном пути на вашем сервере). Результат будет таким, как показано ниже -
0) admin-0
1) admin-1
2) admin-2