大家好?我又遇到个问题,是关于实体引用的
dtdFile2.dtd文件:
<!ENTITY  java  SYSTEM  "TestXML.java" >
<!ELEMENT  root   (son1,son2)>
<!ELEMENT  son1  (#PCDATA)>
<!ELEMENT  son2  (#PCDATA)>

shiti.xml文件:
<?xml version="1.0"  encoding="utf-8"?>
<!DOCTYPE root  SYSTEM  "dtdFile2.dtd">
<root>
<son1>
这是个java文件:
&java;
</son1>
<son2>
你好!
</son2>
</root>

TestXML.java文件:【随便一个名为TestXML.java即可】
import javax.xml.parsers.*;
import org.xml.sax.helpers.*;
import org.xml.sax.*;
import java.io.*;
import org.w3c.dom.*;

public class  TestXML
{
public static void main(String args[])
{
    
try{
         DocumentBuilderFactory  factory
=DocumentBuilderFactory.newInstance();
         DocumentBuilder builder
=factory.newDocumentBuilder();
         MyHandler  handler
=new MyHandler();
         builder.setErrorHandler(handler);
         Document document
=builder.parse(new File("Price.xml"));
         NodeList nodelist
=document.getElementsByTagName("goods");
         
int size=nodelist.getLength();
         
for(int k=0;k<size;k++)
             
{
                  Node node
=nodelist.item(k);
                  String name
=node.getNodeName();
                  String content
=node.getTextContent();
                  System.out.print(name);
                  System.out.println(
":  "+content);
             }

    }


    
catch(Exception e)
           
{
                System.out.println(e);
           }


}

}


class MyHandler extends DefaultHandler
{
    String errorMessage
=null;
    
public void error(SAXParseException e) throws SAXException
    
{
        errorMessage
=e.getMessage();
        System.out.println(
"一般错误:"+errorMessage);
    }


    
public void fatalError(SAXParseException e) throws SAXException
    
{
        errorMessage
=e.getMessage();
        System.out.println(
"致命错误:"+errorMessage);
    }

}

我在浏览器里打开时有如下提示
无效字符是;[引号]吗?那又该如何表示呢?谢谢大家

名称包含无效字符。处理资源 'file:///E:/web/TestXML.java' 时出错。第 19 行,位置: 22

 

 

 

 

   for(int k=0;k<size;k++)
    ---------------------^
实体引用中的特殊符号也要采用实体引用,相当简单的原因