大家好?我又遇到個問題,是關于實體引用的
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++)
    ---------------------^
實體引用中的特殊符號也要采用實體引用,相當簡單的原因