首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取包含无效字符的XML文件

读取包含无效字符的XML文件
EN

Stack Overflow用户
提问于 2011-02-16 19:59:37
回答 2查看 4.6K关注 0票数 2

我正在使用Dataset.ReadXML()来读取XML字符串。我得到一个错误,因为XML字符串包含无效字符0x1F,这是'US‘-单位分隔符。这包含在完全格式的标签中。

使用Perl脚本从Oracle DB中提取数据。如何对此字符进行转义以便正确读取XML?

编辑: XML字符串:

代码语言:javascript
运行
复制
<RESULT>
<DEPARTMENT>Oncology</DEPARTMENT> 
<DESCRIPTION>Oncology</DESCRIPTION> 
 <STUDY_NAME>**7360C hsd**</STUDY_NAME> 
 <STUDY_ID>27</STUDY_ID> 
</RESULT>

在粗体部分的C和h之间,是有一个美国分隔符的地方,当粘贴到这里时,实际上显示一个空格。所以我想知道如何在XML字符串中忽略它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 03:26:10

如果查看section 2.2 of the XML recommendation,就会发现x01F不在文档中允许的字符范围内。因此,虽然您正在查看的字符串可能看起来像XML文档,但它不是。

你有两个问题。相对较小的问题是如何处理此文档。我可能会对字符串进行预处理,并丢弃任何在格式良好的XML中不合法的字符,但是我对这个相对较大的问题一无所知。

相对较大的问题是:这些数据首先在那里做什么?(假设)人类可读数据字段中间的不可见ASCII字符有什么作用(如果有的话)?为什么生成这个字符串的Perl脚本在遇到非法字符时没有失败?

我敢打赌一美元,这是因为编写该脚本的人使用的是字符串操作,而不是XML库来生成XML文档。这就是为什么,正如我多次说过的那样,您永远不应该使用字符串操作来生成XML。(当然也有例外。例如,如果您正在编写一次性应用程序或XML解析器。或者你的名字是Tim Bray。)

票数 2
EN

Stack Overflow用户

发布于 2011-02-16 20:04:30

必须使用正确的编码创建XmlReader/TextReader。您可以按如下方式创建它,并将其传递给Dataaset:

代码语言:javascript
运行
复制
StreamReader reader = new StreamReader("myfile.xml",Encoding.ASCII); // or correct encoding
myDataset.ReadXml(reader);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5016127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档