相关疑难解决方法(0)

XML中的特殊字符

我正在使用xml和xsl创建一个左导航系统.在我尝试在xml文档中使用特殊字符之前,一切都很顺利.我正在使用»,我得到了错误.

原因:引用未定义的实体'raquo'.
错误代码:-1072898046

我该如何工作?

xml xslt dtd entities special-characters

12
推荐指数
3
解决办法
2万
查看次数

jinja + form + unicode控制字符+ xml/docx集成

我正在根据表单中的用户输入创建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)

python lxml jinja2 flask python-docx

8
推荐指数
1
解决办法
270
查看次数

当字符在CDATA中时,为什么XML序列化程序会抛出无效字符异常?

可能重复:
为什么"控制"字符在XML中是非法的?
在XML文件中保存转义字符0x1b

这会抛出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)也是如此.

你是如何解决这个问题的?

.net c# xml xml-serialization

6
推荐指数
1
解决办法
2162
查看次数