使用<解析XML和和gt;
本文关键字:gt 和和 XML 解析 使用 | 更新日期: 2023-09-27 18:17:38
我试图剥离一些XML,只获得与字段相关的值,但是XML不使用小于号和大于号。我尝试子字符串周围的字段名称(在下面的情况下,它是日期),这工作得很好。
<my:Date xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2014-07-27T23:04:34">2014-08-15</my:Date>
但是,我无法在小于和大于周围进行子字符串。我的代码如下:
public string processReportXML(string field, string xml)
{
try
{
string result = xml.Substring(xml.IndexOf(field));
int resultIndex = result.LastIndexOf(field);
if (resultIndex != -1) result = result.Substring(0, resultIndex);
result = result.Substring(result.IndexOf(">"));
resultIndex = result.IndexOf("<");
if (resultIndex != -1) result = result.Substring(0, resultIndex);
return field + ": " + result.Substring(4) + "'n";
}
catch (Exception e)
{
return field + " failed'n";
}
}
我在一个测试项目中尝试过,它工作得很好,但我总是得到索引应该大于0在我的实际web服务。我也尝试过使用regex来替换字符,但这也不起作用。
result = Regex.Replace(result, "&(?!(amp|apos|quot|lt|gt);)", "hidoesthiswork?");
你有html编码的数据。
将此添加到您的方法开头以获得简单的解决方案:
xml = HttpUtility.HtmlDecode(xml);
如果你正在使用。net 4.0+,你也可以使用WebUtility.HtmlDecode
,就像这个答案
从长远来看,您应该真正使用XML解析器或LINQ-XML之类的东西来访问这些数据。对于这类结构化数据,正则表达式不是一个合适的工具。