我有一个包含无效XML字符的字符串.在解析字符串之前,如何转义(或删除)无效的XML字符?
使用Java DOM解析器解析XML文件会导致:
[Fatal Error] os__flag_8c.xml:103:135: An invalid XML character (Unicode: 0xc) was found in the element content of the document.
org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xc) was found in the element content of the document.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
Run Code Online (Sandbox Code Playgroud) 您好我想从字符串中删除所有无效的XML字符.我想使用string.replace方法的正则表达式.
喜欢
line.replace(regExp,"");
什么是正确的regExp使用?
无效的XML字符是不是这样的一切:
[#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Run Code Online (Sandbox Code Playgroud)
谢谢.
我从外部源接收xml字符串,其中包含未经授权的用户贡献内容.
以下xml字符串给出了ParseError cElementTree:
>>> print repr(s)
'<Comment>dddddddd\x08\x08\x08\x08\x08\x08_____</Comment>'
>>> import xml.etree.cElementTree as ET
>>> ET.XML(s)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
ET.XML(s)
File "<string>", line 106, in XML
ParseError: not well-formed (invalid token): line 1, column 17
Run Code Online (Sandbox Code Playgroud)
有没有办法让cElementTree不抱怨?
我知道有Alt+ Enter组合将单个String提取到字符串资源.但我想知道有什么东西可以将我的项目的所有字符串提取到字符串资源中吗?
如果我制作其中一个,Android工作室也不会将相同的String制作成字符串资源.
String s = "Hello World";
String s2 = "Hello World";
Run Code Online (Sandbox Code Playgroud)
例如.我将"Hello World"创建为字符串资源,另外还在项目中同样保存硬编码.
String s = getString(R.string.helloworld);
String s2 = "Hello World";
Run Code Online (Sandbox Code Playgroud)
如果有人知道这样的事情.
我有特殊字符的值,在我的xml中编码为ascii.例如 :
<?xml version="1.0" encoding="UTF-8"?>
<response>
<name>Žirmūnų</name>
</response>
Run Code Online (Sandbox Code Playgroud)
但是当我解析价值时,name我只得到&价值.难道是允许使用#或&在XML?或者我必须使用cdata?
我想在XML文件中编码和解码二进制数据(使用Python,但无论如何).我必须面对XML标记内容具有非法字符的事实.XML规范中描述了唯一允许的:
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Run Code Online (Sandbox Code Playgroud)
这意味着不允许的是:
1个字节可以编码256种可能.通过这些限制,第一个字节限制为256-29-8-1-3 = 215个可能性.
在第一个字节的215个可能性中,base64仅使用64个可能性.Base64产生33%的开销(一旦用base64编码,6位变为1字节).
所以我的问题很简单:是否有一种比base64更有效的算法来编码XML中的二进制数据?如果没有,我们应该从哪里开始创建它?(图书馆等)
注意:你不会回答这个帖子"你不应该使用XML来编码二进制数据,因为......".只是不要.您最多可以争论为什么不使用215种不良XML解析器支持的可能性.
NB2:我不是在谈论第二个字节,但是当我们使用补充的Unicode平面时,肯定会有一些关于可用性的因素以及它应该从10xxxxxx开始遵守UTF8标准的事实(如果不是,那么? ).
我必须使用XML文件,但我没有得到所有项目,因为我的导航器中显示的此错误在文件内容之前.确切的错误是:
此页面包含以下错误:
第10行第4099行的错误:PCDATA无效字符值11以下是直到第一个错误的页面呈现.
我该怎么办 ?谢谢你的建议.
我有一个使用ClosedXML导出到Excel的C#应用程序.它工作正常但只是遇到了一个问题,当我点击:
var ms = new MemoryStream();
workbook.SaveAs(ms);
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
' ', hexadecimal value 0x0B, is an invalid character
Run Code Online (Sandbox Code Playgroud)
它肯定是数据相关的,因为我看它确实工作正常,但其他数据导致这个问题.
我怎样才能找出造成问题的角色?此外,一旦我弄清楚了,找到这个角色在我的数据中的哪个位置的最佳方法是什么?