错误:“尚未声明前缀“xsi"的命名空间. [英] ERROR: 'Namespace for prefix 'xsi' has not been declared.'

查看:34
本文介绍了错误:“尚未声明前缀“xsi"的命名空间.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我会收到此错误:

Why am I getting this error:

错误:'前缀'xsi'的命名空间尚未声明.'

ERROR: 'Namespace for prefix 'xsi' has not been declared.'

这是我的 Java 代码:

Here is my Java code:

package com.emp.ma.jbl.nsnhlrspmlpl.nsnhlrspmlpl.internal.action;
import com.emp.ma.util.xml.XMLDocument;
import com.emp.ma.util.xml.XMLDocumentBuilder;

 public class yay {            
        public static void main(String[] args) {
            XMLDocument xmldoc = XMLDocumentBuilder.newDocument().addRoot("spml:modifyRequest");
            xmldoc.gotoRoot().addTag("modification").addText("");
            xmldoc.gotoChild("modification").addTag("valueObject").addText("");
            xmldoc.gotoChild("valueObject").addAttribute("xsi:type","halo");
            System.out.println(xmldoc);
        }            
    }

这段代码运行正常,直到我尝试抛出转换器异常,同时将 XML 文件转换为 HTML 仅用于实验.我需要使用以下格式创建一个 xml 文件:

This code was functioning properly until I tried throwing transformer exception whilst converting XML file to HTML for experimenting only. I need to create an xml file with the format:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<spml:modifyRequest>   
  <modification>
    <valueObject xsi:type="halo">
    </valueObject>   
  </modification>
</spml:modifyRequest>

我已经从代码中删除了转换器部分,但我在 eclipse 中遇到了这个错误:

I removed the transformer part from the code already and yet I'm getting this error in eclipse:

 ERROR:  'Namespace for prefix 'xsi' has not been declared.'
    Exception in thread "main" com.emp.ma.util.xml.XMLDocumentException: java.lang.RuntimeException: Namespace for prefix 'xsi' has not been declared.
        at com.emp.ma.util.xml.XMLDocumentImpl.toResult(XMLDocumentImpl.java:1244)
        at com.emp.ma.util.xml.XMLDocumentImpl.toStream(XMLDocumentImpl.java:1314)
        at com.emp.ma.util.xml.XMLDocumentImpl.toString(XMLDocumentImpl.java:1336)
        at com.emp.ma.util.xml.XMLDocumentImpl.toString(XMLDocumentImpl.java:1325)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.emp.ma.util.xml.XMLDocumentBuilder$XMLDocumentHandler.invoke(XMLDocumentBuilder.java:55)
        at $Proxy1.toString(Unknown Source)
        at java.lang.String.valueOf(Unknown Source)
        at java.io.PrintStream.println(Unknown Source)
        at com.emp.ma.jbl.nsnhlrspmlpl.nsnhlrspmlpl.internal.action.yay.main(yay.java:13)
    Caused by: javax.xml.transform.TransformerException: java.lang.RuntimeException: Namespace for prefix 'xsi' has not been declared.
        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.emp.ma.util.xml.XMLDocumentImpl.toResult(XMLDocumentImpl.java:1242)
        ... 12 more
    Caused by: java.lang.RuntimeException: Namespace for prefix 'xsi' has not been declared.
        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.TransformerImpl.transformIdentity(Unknown Source)
    ... 15 more

我因为这个异常被卡住了,我不知道如何撤消.请帮忙.就像我说的,在尝试我的这个实验之前,它运行正常,如果可能的话,我如何删除这个变压器集成.我也尝试过更改工作区 - 仍然无法正常工作.

I'm stuck because of this one exception and I don't know how to undo this. Please do help. Like i said, it was functioning properly before trying this experiment of mine, if possible how do I remove this transformer integration. I've tried changing workspace as well -- still not working.

推荐答案

要使 XML 文档格式正确,必须声明所有使用的名称空间前缀.

For an XML document to be well-formed, all used namespace prefixes must be declared.

只需在 XML 的根元素上声明 xsi 命名空间前缀,

Simply declare the xsi namespace prefix on the root element of your XML,

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<spml:modifyRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   
  <modification>
    <valueObject xsi:type="halo">
    </valueObject>   
  </modification>
</spml:modifyRequest>

你的错误就会消失.

请注意,您同样必须定义 spml 命名空间前缀.

Note that you'll similarly have to define the spml namespace prefix.

这篇关于错误:“尚未声明前缀“xsi"的命名空间.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆