You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by Rick Rivello <ri...@nist.gov> on 2001/03/14 16:26:02 UTC
NO_MODIFICATION_ALLOWED_ERR
All
I am trying to write a simple program that will throw the
NO_MODIFICATION_ALLOWED_ERR DOMException.
I get the lastChild node of an element which is readonly and use
the setNodeValue() to set the value. I think
this should throw a NO_MODIFICATION_ALLOWED_ERR
since the node is readonly.
******************************************************************************************
*********
Below is a copy of nodetest.java, staff.xml, st.dtd and the output created.
I am running xerces-1_3_0
Thanks in advance for any help or suggestions.
Rick Rivello
Contents of nodetest.java
******************************************************************************************
*************
import org.w3c.dom.*;
import org.w3c.dom.Node;
import org.apache.xerces.parsers.*;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import java.io.*;
import java.net.*;
public class nodetest {
public static Document doc = null; // Initialize doc
static final short NO_MODIFICATION_ALLOWED_ERR = 7;
public static void main(String argv[]) {
try {
org.apache.xerces.parsers.DOMParser parser = new
org.apache.xerces.parsers.DOMParser();
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion",
false);
parser.setFeature("http://apache.org/xml/features/dom/include-ignorable-whitespace",
true);
parser.parse("staff.xml");
doc = parser.getDocument();
}
catch (SAXException se) {
se.printStackTrace(System.err);
}
catch (IOException ioe) {
ioe.printStackTrace(System.err);
}
// Retrieve targeted data
try
NodeList elementList = doc.getElementsByTagName("employeeId");
Node lchildNode = elementList.item(0).getLastChild();
System.out.println(lchildNode.getNodeName());
System.out.println(lchildNode.getNodeType());
System.out.println(lchildNode.getNodeValue());
try
lchildNode.setNodeValue("newvalue");
}
catch(DOMException e) {
if (e.code == NO_MODIFICATION_ALLOWED_ERR)
System.out.println("NO_MODIFICATION_ALLOWED_ERR");
else
System.out.println(String.valueOf(e.code));
}
System.out.println(String.valueOf(lchildNode.getNodeValue()));
}
catch (Exception e) {
System.out.println("ABORTED DUE TO ERROR");
}
}
}
******************************************************************************************
*****
Contents of staff.xml
******************************************************************************************
*****
<?xml version="1.0"?><?TEST-STYLE PIDATA?>
<!DOCTYPE staff SYSTEM "st.dtd" [
<!ENTITY ent2 "1900 Dallas Road">
]>
<!-- This is comment number 1.-->
<staff>
<employee>
<employeeId>EMP0001</employeeId>
<name>Margaret Martin</name>
<position>Accountant</position>
<salary>56,000</salary>
<gender>Female</gender>
<address domestic="Yes">1230 North Ave. Dallas, Texas 98551</address>
</employee>
</staff>
******************************************************************************************
*******
Contents of st.dtd
******************************************************************************************
*******
<!ELEMENT employeeId (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT position (#PCDATA)>
<!ELEMENT salary (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT entElement (#PCDATA)>
<!ELEMENT employee (employeeId, name, position, salary, gender, address) >
<!ELEMENT staff (employee)+>
******************************************************************************************
************
Output of running nodetest.java is:
#text
3
EMP0001
newvalue
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org