如何用c#从损坏的XML中删除所有名称空间
本文关键字:删除 有名称 空间 XML 何用 损坏 | 更新日期: 2023-09-27 17:50:44
下面是如何从xml中删除所有命名空间。但这对我不起作用。因为有时我得到坏的xml提要。如:
<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress.com" -->
<rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
<channel>
<title>sabri ?lker - WordPress.com Search</title>
<link>http://tr.search.wordpress.com/?q=sabri+%C3%BClker&page=2&t=comment&s=date</link>
<description>sabri ?lker - WordPress.com Search</description>
<pubDate>Fri, 04 Jan 2013 08:58:41 +0000</pubDate>
<language>tr</language>
<image><url>http://s.wordpress.com/i/buttonw-com.png</url><width>224</width><height>58</height><title>WordPress.com</title><link>http://wordpress.com/</link></image>
<generator>http://search.wordpress.com/</generator>
<atom:link rel="self" type="application/rss+xml" href="http://tr.search.wordpress.com/?q=sabri+%C3%BClker&page=2&t=comment&s=date&f=feed" />
<atom:link rel="search" type="application/opensearchdescription+xml" href="http://en.search.wordpress.com/opensearch.xml" title="WordPress.com" />
<opensearch:totalResults>10</opensearch:totalResults><opensearch:startIndex>11</opensearch:startIndex><opensearch:itemsPerPage>10</opensearch:itemsPerPage><opensearch:Query role="request" searchTerms="sabri ?lker startPage='"2" /></channel>
</rss>
我的例外是"名称不能以'2'字符开头,十六进制值0x32。第17行,位置227。"那么我该怎么做才能解决这个问题呢?
我认为原因是searchTerms属性格式不正确:
searchTerms="sabri ?lker startPage='"2"
引号用错了,应该用"而不是'"。您可以简单地将所有'"替换为"
string input = ..; // your xml
string processedInput = input.Replace("'''"", """);
// then feed this into your xml parser.
这应该可以解决您的问题,但这当然不是清除错误xml输入的一般方法。您可能想看看http://tidyfornet.sourceforge.net/,它可以清理HTML、XHTML和XML。