抛出的异常是:
错误:“没有说明名称空间前缀“border-bottom”。”
javax.xml.transform.TransformerException: java.lang.RuntimeException: 没有说明名称空间前缀“border-bottom”。
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.java.iText.Htmlxml.genXmlFile(Htmlxml.java:62)
at com.java.iText.Htmlxml.main(Htmlxml.java:36)
Caused by: java.lang.RuntimeException: 没有说明名称空间前缀“border-bottom”。
at com.sun.org.apache.xml.internal.serializer.SerializerBase.getNamespaceURI(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.SerializerBase.addAttribute(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
... 4 more
---------
java.lang.RuntimeException: 没有说明名称空间前缀“border-bottom”。
at com.sun.org.apache.xml.internal.serializer.SerializerBase.getNamespaceURI(Unknown Source)
at com.sun.org.apache.xml.internal.serializer.SerializerBase.addAttribute(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.java.iText.Htmlxml.genXmlFile(Htmlxml.java:62)
at com.java.iText.Htmlxml.main(Htmlxml.java:36)

解决方案 »

  1.   

    原码是: public static void main(String args[])
    {
    try
    {
    String path = "E:/Temp/report20070615091847.html";
    String outputfile = "E:/Temp/temp.xml";
    Htmlxml h2x = new Htmlxml();
    DocumentFragment df = h2x.getSourceNode(path);
    File file = new File(outputfile);
    if (file.exists())
    file.delete();
    h2x.genXmlFile(df, file);
    System.out.println("generate " + file.getCanonicalPath() + " successfully!");
    } catch (IOException e)
    {
    e.printStackTrace();
    } catch (Exception e)
    {
    e.printStackTrace();
    } catch (Error e)
    {
    e.printStackTrace();
    }
    } public void genXmlFile(Node output, File file) throws Exception, Error
    {
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    DOMSource source = new DOMSource(output);
    FileOutputStream fos = new FileOutputStream(file);
    StreamResult result = new StreamResult(fos);
    Properties props = new Properties();
    props.setProperty("encoding", "UTF-8");
    props.setProperty("method", "xml");
    props.setProperty("omit-xml-declaration", "yes");
    transformer.setOutputProperties(props);
    transformer.transform(source, result);
    fos.close(); } public DocumentFragment getSourceNode(String path) throws Exception, Error
    {
    DOMFragmentParser parser = new DOMFragmentParser();
    HTMLDocument document = new HTMLDocumentImpl();
    DocumentFragment fragment = document.createDocumentFragment(); if (path != null && !path.trim().equals(""))
    {
    File input = new File(path);
    InputStream inputs = new FileInputStream(input);
    InputStreamReader isr = new InputStreamReader(inputs, "UTF-8");
    InputSource source = new InputSource(isr);
    parser.parse(source, fragment);
    return fragment;
    } else
    {
    return null;
    } }
      

  2.   

    程序把CSS的属性border-bottom当成是命名空间的名字了。要看看你的HTML文件,是不是在设置CSS的时候没有加上双引号。
    由于HTML的格式很随意,比如属性值可以不用引号括起来。因此转换成XML的时候难免出错的。建议先对HTML文件进行一定的处理,之后再转换。