天道酬勤,学无止境

XML 验证错误:EntityRef:期望';'(XML Validation error : EntityRef: expecting';')

问题
<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

第 102 行第 103 列错误:EntityRef:期望';'

无法弄清楚可能是什么问题。

回答1

您的网址必须经过转义。

&字符在 XML 中用于插入具有语法&name;字符引用&name; (注意;在名字之后)。 解析器期望一个; 但它找不到它(有更多可用的分隔符,这只是最常见的情况)。

然后解决方案正在转义(如何完成取决于您用于生成该 XML 文件的语言)但最终结果必须是这样的:

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&amp;checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

请注意,普通&已被其转义版本&amp;替换&amp; . 有关更多详细信息,请参阅这篇简单的文章。

另一种可能的解决方案(如果您不想要/无法转义)是将 URL 包含在 CDATA 部分中,如下所示:

<url>
  <loc><![CDATA[http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo]]></loc>
</url>
回答2

另一种方式如下:

我们可以为 url 节点使用htmlspecialchars PHP本机函数,而不是“ CDATA ”。 它将在 xml 输出中不需要CDATA的 xml feed 中起作用,因此这对某人有帮助。

谢谢

回答3

我今天偶然发现了同样的问题,如果您使用 PHP 构建链接,则可以使用此功能:

htmlspecialchars();

它会将所需的字符串格式化为 HTML 字符,以便您可以将其作为<loc>插入。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • XML Validation error : EntityRef: expecting';'
    <url> <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo</loc> </url> error on line 102 at column 103: EntityRef: expecting';' Not able to figure out what could be the problem.
  • 如何使用未转义的&符号来解析XML(How to parse XML with unescaped ampersand)
    问题 我必须读取大(约200MB)的XML文件,我正在将xmlreader与PHP结合使用。 其中包含带有未转义与号的节点URL。 解析总是在第一个URL NODE上停止。 我正在使用与XML文件的xml标记中指定的相同的Windows-1250编码。 IAM收到错误: parser error : EntityRef: expecting ';' in parser error : EntityRef: expecting ';' in 是否可以用&的NODE值解析XML? 多谢您提供任何提示,如有需要,我可以分享代码。 回答1 是否可以用&的NODE值解析XML? 不,这意味着该文件根本不是格式正确的XML,因此实际上并没有资格作为XML文件,并且没有XML文件解析器可以处理该文件,否则它将不是XML解析器。 但是,您可以对数据进行预处理,然后再将其传递给XML解析器并自行解决问题( & -> & )。 回答2 @hakre是正确的。 为了解析任何XML,您必须先对数据进行预处理。 原因是在XML中,“&”仅用于实体。 例如,如果您使用的是XML,则开头的<<和结尾的'>'非常重要,并且以下节点对解析器没有任何意义: <object>This object is > than the other object</object> 解析器认为文本中间的“>”试图关闭某个位置的标签
  • EntityRef:expecting“;”
    当时在开发移动端APP的下载,但是Android的下载好做,IOS的因为技术封锁,只能通过iOS系统提供的格式进行下载,非常麻烦,我采用的是plist文件传输下载路径等信息的方式进行进行的iOS下载,plist文件其实也就是一个XML文件,此文件可以手写输出也可以使用Google提供的plist文件自动生成的jar包,在xml文件里面包含的有几个重要的元素,比如说下载路径、各个大小样式图标、APP版本号等数据,在编写好后调用接口在网页上看到如下所示的问题;此问题是因为转码的问题,因下载路径在处理时没有将进行转码,需要将其转为(分号与p之间没间隔,因为CSDN编辑插件中也能识别这个转码,不加空格显示的也是个&);来源:https://blog.51cto.com/u_15175540/2723354
  • 在AutoMapper中获取异常(Getting an exception with AutoMapper)
    问题 我正在对使用自动映射器将类从我的域映射到linq到sql类的方法进行单元测试。 大致上,这些类和映射如下(SupplierEligibilityAllocated是L2S自动生成的类)。 public class SupplierEligibilityTransactionByQuantity { public decimal Eligibility { get; private set; } public decimal CoreValue { get; private set; } public int? TransactionId { get; private set; } public SupplierTransactionStatus Status { get; private set; } public int? DebitId { get; set; } public int ManifestId { get; private set; } } public partial class SupplierEligibilityAllocated { private int _SupplierEligibilityCreditId; private int _ManifestId; private System.Nullable<int>
  • How to parse XML with unescaped ampersand
    I have to read large (about 200MB) XML file, I'am using xmlreader with PHP. There is node URL with unescaped ampersand in it. Parsing always stops on first url NODE. I'm using encoding windows-1250 same as is specified in xml tag of XML file. Iam getting error: parser error : EntityRef: expecting ';' in Is it possible to parse an XML with & in value of NODE ? Thank you for any tips, I can share a code if you need.
  • 使用(X)HTML实体解析XML(Parse XML with (X)HTML entities)
    问题 尝试使用ElementTree解析包含未定义实体(即  )的XML会引起: ParseError: undefined entity   在Python 2.x中,可以通过创建解析器(文档)来更新XML实体dict: parser = ET.XMLParser() parser.entity["nbsp"] = unichr(160) 但是如何使用Python 3.x做到这一点? 更新:我方面存在误解,因为我忽略了在尝试更新XML实体dict之前调用parser.parser.UseForeignDTD(1) ,这会导致解析器出错。 幸运的是,@ m.brindley很有耐心,并指出XML实体dict在Python 3.x中仍然存在,并且可以像在Python 2.x中一样进行更新。 回答1 这里的问题是XML中唯一有效的助记符实体是quot , amp , apos , lt和gt 。 这意味着必须使用XML 1.1规范中定义的实体声明标记在DTD中定义几乎所有(X)HTML命名实体。 如果文档是独立的,则应使用内联DTD来完成,如下所示: <?xml version="1.1" ?> <!DOCTYPE naughtyxml [ <!ENTITY nbsp " "> <!ENTITY copy "©"> ]> <data> <country name=
  • xmlserializer验证(xmlserializer validation)
    问题 我正在使用XmlSerializer反序列化Xml实现。 但是我发现生成的类xsd.exe仅提供读取xml的功能,但没有验证。 例如,如果文档中缺少一个节点,则生成的类的属性字段将为null,而不是像我期望的那样引发验证异常。 我该如何实现? 谢谢! 回答1 以下代码应在反序列化时针对模式进行验证。 类似的代码可用于在序列化时针对架构进行验证。 private static Response DeserializeAndValidate(string tempFileName) { XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add(LoadSchema()); Exception firstException = null; var settings = new XmlReaderSettings { Schemas = schemas, ValidationType = ValidationType.Schema, ValidationFlags = XmlSchemaValidationFlags.ProcessIdentityConstraints | XmlSchemaValidationFlags.ReportValidationWarnings }; settings
  • What's an appropriate HTTP status code to return by a REST API service for a validation failure?(What's an appropriate HTTP status code to return by a REST API service for a validation failure?)
    问题 每当我在基于Django / Piston的REST API应用程序中遇到验证失败时,我当前都会返回401未经授权。 看过HTTP状态代码注册表后,我不认为这是验证失败的合适代码,大家都建议什么? 400错误的要求 401未经授权 403禁止 405不允许的方法 406不可接受 412前提条件失败 417期望失败 422无法处理的实体 424依赖失败 更新:上面的“验证失败”表示应用程序级别的数据验证失败,即,错误地指定了日期时间,虚假的电子邮件地址等。 回答1 如果“验证失败”表示请求中存在某些客户端错误,请使用HTTP 400(错误请求)。 例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP 400。它无法解析。 (1/2016):在过去的五年中,WebDAV更为特定的HTTP 422(不可处理实体)已成为HTTP 400的非常合理的替代品。例如,请参见在JSON API中的使用。 但请注意,HTTP 422尚未将其纳入HTTP 1.1,RFC-7231。 Richardson和Ruby的RESTful Web服务包含了有关何时使用各种HTTP响应代码的非常有用的附录。 他们说: 400(“错误请求”) 重要性:高。 这是一般的客户端错误状态,在没有其他合适的4xx错误代码时使用。
  • Unable to parse xml data with colon (:) from response using getNamespaces()
    I want to read whatever is inside the <q:content></q:content> tags in the following xml - $xml = '<?xml version="1.0"?> <q:response xmlns:q="http://api-url"> <q:impression> <q:content> <html> <head> <meta name="HandheldFriendly" content="True"> <meta name="viewport" content="width=device-width, user-scalable=no"> <meta http-equiv="cleartype" content="on"> </head> <body style="margin:0px;padding:0px;"> <iframe scrolling="no" src="http://some-url" width="320px" height="50px" style="border:none;"></iframe> </body> </html> </q:content> <q:cpc>0.02</q:cpc> </q:impression> ... ... some more things
  • 验证失败或无效重复的REST HTTP状态代码(REST HTTP status codes for failed validation or invalid duplicate)
    问题 我正在使用基于REST的API构建应用程序,并且到了我为每个请求指定状态代码的地步。 对于验证失败的请求,或者请求试图在数据库中添加重复项的情况,我应该发送什么状态代码? 我已经浏览了http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但似乎都不对。 发送状态代码时是否有惯例? 回答1 对于输入验证失败:400错误的请求+您的可选描述。 在“ RESTful Web服务”一书中建议这样做。 对于双重提交:409冲突 2014年6月更新 相关的规范曾经是RFC2616,它使用400(错误请求)的范围很窄, 由于语法格式错误,服务器无法理解该请求 因此,可能有人认为它不适合语义错误。 但是没有更多了。 自2014年6月起,相关标准RFC 7231(取代了先前的RFC2616)在以下方面更广泛地使用了400(错误请求): 由于某些原因,服务器无法或将不会处理请求,因为这被认为是客户端错误 回答2 验证失败:403禁止(“服务器理解了该请求,但拒绝履行该请求”)。 与流行观点相反,RFC2616并未说“ 403仅用于失败的身份验证”,而是说“ 403:我知道您想要什么,但我不会那样做”。 该条件可能是也可能不是由于身份验证。 尝试添加重复项:409冲突(“由于与资源的当前状态冲突,请求无法完成。”) 您绝对应该在响应标头和
  • Getting an exception with AutoMapper
    I'm unit testing a method which uses automapper to map a class from my domain to a linq to sql class. Roughly, the classes and mapping are below (The SupplierEligibilityAllocated is a L2S auto generated class). public class SupplierEligibilityTransactionByQuantity { public decimal Eligibility { get; private set; } public decimal CoreValue { get; private set; } public int? TransactionId { get; private set; } public SupplierTransactionStatus Status { get; private set; } public int? DebitId { get; set; } public int ManifestId { get; private set; } } public partial class
  • 在“验证”服务器中正确使用HTTP状态代码(Proper use of HTTP status codes in a “validation” server)
    问题 我的应用程序发送给第三方SOA服务器的数据中有复杂的XML。 服务器所有者确实提供了XML模式( .xsd ),并且由于服务器拒绝了无意义的无效XML消息,因此我需要在发送之前在本地对其进行验证。 我可以使用独立的XML模式验证器,但是它们很慢,主要是因为解析模式文件需要时间。 因此,我以HTTP Server的形式编写了自己的模式验证器(在Java中,如果有关系的话),该服务器缓存已解析的模式。 问题是:在验证过程中,许多事情可能出错。 除了意外的异常和成功的验证之外: 服务器可能找不到指定的架构文件指定的文件可能不是有效的架构文件 XML对架构文件无效 由于它是HTTP服务器,因此我想为客户端提供有意义的状态代码。 在上述所有情况下,服务器是否应回答400错误(错误请求)? 还是他们与HTTP无关,它应该在正文中以一条消息回答200 ? 还有其他建议吗? 更新:主应用程序是用Ruby编写的,它没有良好的xml模式验证库,因此单独的验证服务器不会过度设计。 回答1 将验证过程中的错误情况映射到有意义的HTTP状态代码是一种完全正确的想法。 我假设您使用URI确定用于验证的特定架构,将XML文件作为POST内容发送到验证服务器。 因此,这里有一些有关错误映射的建议: 200:XML内容有效 400:XML内容格式不正确,标头不一致,请求与RFC 2616语法不匹配 401
  • 使用JAXB验证架构(Validating against a Schema with JAXB)
    问题 考虑到听起来很容易,我一直在寻找解决这个问题的方法,时间太久了,因此我来寻求帮助。 我有一个与xjc一起使用的XML模式,用于创建我的JAXB绑定。 当XML格式正确时,这可以很好地工作。 不幸的是,当XML格式不正确时,它也不会抱怨。 当我尝试解组XML文件时,我无法弄清楚如何对模式进行适当的完全验证。 我设法使用ValidationEventCollector来处理事件,该事件可用于XML解析错误(例如,不匹配的标签),但是当存在需要但完全不存在的标签时,则不会引发任何事件。 据我所知,可以对模式进行验证,但是必须知道该模式的路径才能将其传递给setSchema()方法。 我遇到的问题是,架构的路径存储在XML标头中,并且在架构将要运行的运行时我无法知道。 这就是为什么将其存储在XML文件中的原因: <?xml version="1.0" encoding="utf-8"?> <DDSSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/a/big/long/path/to/a/schema/file/DDSSettings.xsd"> <Field1>1</Field1> <Field2>-1</Field2> ...等等
  • Weblogic中的web.xml验证由于cookie-config而引发错误(web.xml validation in Weblogic throws error because of cookie-config)
    问题 我有一个用于应用程序的web.xml。 <?xml version="1.0"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>..</display-name> <description>..</description> <session-config> <cookie-config> <name>SESSIONDEBUG_JSESSIONID</name> </cookie-config> </session-config> </web-app> 部署时出现以下错误 Caused By: weblogic.descriptor.DescriptorException: VALIDATION PROBLEMS WERE FOUND problem: cvc-complex-type.2.4a: Expected element 'session
  • 警告:验证已打开,但是org.xml.sax.ErrorHandler(Warning: validation was turned on but an org.xml.sax.ErrorHandler)
    问题 知道为什么会发生此错误以及如何解决该错误吗? 尝试解析/加载配置文件时出现此错误: 错误 Warning: validation was turned on but an org.xml.sax.ErrorHandler was not set, which is probably not what is desired. Parser will use a default ErrorHandler to print the first 10 errors. Please call the 'setErrorHandler' method to fix this. Error: URI=null Line=3: Document root element "persistence", must match DOCTYPE root "null". Error: URI=null Line=3: Document is invalid: no grammar found. null [] null 主要代号 public static void main(String[] args) throws ConfigurationException { config = new XMLPropertiesConfiguration(new File("META-INF/vamola
  • 如何在C#中针对DTD验证XML文档?(How do I validate an XML document against a DTD in C#?)
    问题 我不想做任何花哨的事情,我只想确保文档有效,如果无效,则打印错误消息。 Google向我指出了这一点,但是XmlValidatingReader似乎已经过时了(至少,MonoDevelop告诉了我)。 编辑:我正在尝试Mehrdad的小费,但遇到了麻烦。 我想我已经掌握了其中的大部分内容,但是在任何地方都找不到OnValidationEvent。 我从哪里得到OnValidationEvent? XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += new ValidationEventHandler(/*trouble is here*/); XmlReader validatingReader = XmlReader.Create(fileToLoad, settings); 回答1 而不是直接创建XmlValidatingReader类,您应该构造一个适当的XmlReaderSettings对象,并将其作为参数传递给XmlReader.Create方法: var settings = new XmlReaderSettings {
  • XML 验证不释放 xml 文件(XML validation does not release the xml file)
    问题 我正在尝试针对 JAVA 中的 XSD 文件验证 XML 文件。 我的问题不是验证本身,因为这工作正常。 我的问题是,验证后未发布 XML 文件。 如果我之后尝试访问该文件,则会收到错误消息“该文件已被另一个资源使用”。 此错误仅在验证失败时发生(从 validator.validate(xmlSource); 中抛出异常)如果文件通过验证没有问题,则该文件被释放并可供其他人访问。 有什么想法吗? public void validateXMLAgainstXSD(String xmlPath, String xsdPath) throws ParserException, IOException { Source xmlSource = null; File schemaFile = null; SchemaFactory schemaFactory = null; Schema schema = null; Validator validator = null; try { schemaFile = new File(xsdPath); xmlSource = new StreamSource(new File(xmlPath)); schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA
  • 使用CXF Web服务的服务器端XML验证(Server-Side XML Validation with CXF Webservice)
    问题 我正在使用Apache CXF Web服务(通过SOAP使用JAX-WS)。 服务本身非常简单:接收请求,将请求插入数据库,然后返回插入是否成功。 我想依靠XML验证来对请求施加一些约束。 所以,我的问题。 如何将详细的验证错误返回给我的服务的客户? 我已经通过配置端点在服务器端进行了验证。 <jaxws:endpoint id="someEndpoint" implementor="#someImpl" address="/impl"> <jaxws:properties> <!-- This entry should- ideally- enable JAXB validation on the server-side of our web service. --> <entry key="schema-validation-enabled" value="true" /> </jaxws:properties> </jaxws:endpoint> 我已经探索过在服务器上使用拦截器(例如BareInInterceptor),并以某种方式捕获SAXParseExceptions来包装它们并将它们发送给客户端。 这种方法似乎有点复杂,但是如果他们的XML无效,我需要以某种方式为客户提供行号。 我应该使用拦截器来暴露异常吗? 我对这种技术堆栈的经验不是很丰富,只是涉足Web服务
  • 为什么我的XSD文件无法使用XML :: LibXML解析?(Why does my XSD file fail to parse with XML::LibXML?)
    问题 我正在尝试使用LibXML :: Schema Validator CPAN模块针对架构验证XML。 在同一脚本中,使用XML :: DOM CPAN模块来解析XML。 我希望我的脚本采用XML文件针对XSD对其进行验证并进行解析。 当我尝试运行脚本时,针对xsd进行验证后,它将退出并且不会解析XML。 我希望它解析XML文件(如果有效)并生成DOM结构。 如果有人可以分享一些见解,我将不胜感激。 #usr/bin/perl -w use XML::LibXML; my $schema = XML::LibXML::Schema->new(location =>'export.xsd'); my $parser = XML::LibXML->new; my $xml = 'Export.xml'; my $doc = $parser->parse_file($xml); eval { $schema->validate( $doc ) }; print $@ if $@; print "$xml is valid\n"; use XML::DOM; #use strict; my $parser = new XML::DOM::Parser; my $doc = $parser->parsefile ("Export.xml"); my
  • 如何捕获RESTEasy Bean验证错误?(How to catch RESTEasy Bean Validation Errors?)
    问题 我正在使用JBoss-7.1和RESTEasy开发一个简单的RESTFul服务。 我有一个称为CustomerService的REST服务,如下所示: @Path(value="/customers") @ValidateRequest class CustomerService { @Path(value="/{id}") @GET @Produces(MediaType.APPLICATION_XML) public Customer getCustomer(@PathParam("id") @Min(value=1) Integer id) { Customer customer = null; try { customer = dao.getCustomer(id); } catch (Exception e) { e.printStackTrace(); } return customer; } } 在这里,当我点击URL http:// localhost:8080 / SomeApp / customers / -1时,@ Min约束将失败并在屏幕上显示stacktrace。 有没有办法捕获这些验证错误,以便我可以准备带有正确错误消息的xml响应并显示给用户? 回答1 您应该使用异常映射器。 例子: @Provider public class