我正在使用xml和xsl创建一个左导航系统.在我尝试在xml文档中使用特殊字符之前,一切都很顺利.我正在使用»
,我得到了错误.
原因:引用未定义的实体'raquo'.
错误代码:-1072898046
我该如何工作?
我正在根据表单中的用户输入创建word文档.但是,当用户输入一个unicode控制字符,并尝试使用python-docx包创建一个word文件时,会发生以下错误:
File "src\lxml\apihelpers.pxi", line 1439, in lxml.etree._utf8
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
Run Code Online (Sandbox Code Playgroud)
我设法通过在每个请求之前检查表单中的无效xml字符来解决此问题(我有许多表单可能会出现此问题),并从字段中删除任何无效的xml字符.然后我创建一个新的不可变多字典,并用清理后的文本填充它.
from docx import Document
from docx.shared import Inches
from flask import Flask, render_template_string, request
from werkzeug.datastructures import ImmutableMultiDict
def valid_xml_char_ordinal(c):
codepoint = ord(c)
return (0x20 <= codepoint <= 0xD7FF or codepoint in (0x9, 0xA, 0xD) or
0xE000 <= codepoint <= 0xFFFD or 0x10000 <= codepoint <= 0x10FFFF)
app = Flask(__name__)
@app.before_request
def before_request():
if 'check_form_xml_validity' in …
Run Code Online (Sandbox Code Playgroud) 这会抛出ArgumentException:
var c = '\x1A';
var xml = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("test", new XCData(c.ToString()))
);
var foo = xml.ToString(); // ArgumentException
Run Code Online (Sandbox Code Playgroud)
为什么.Net会抛出这个异常?我将非法字符包裹在CDATA中,所以我原本以为我会处理非法字符.对于一堆其他字符(例如0x1B,0x1C,0x1E,0x1E,0x1F)也是如此.
你是如何解决这个问题的?