使用<解析XML和和gt;

本文关键字:gt 和和 XML 解析 使用 | 更新日期: 2023-09-27 18:17:38

我试图剥离一些XML,只获得与字段相关的值,但是XML不使用小于号和大于号。我尝试子字符串周围的字段名称(在下面的情况下,它是日期),这工作得很好。

    &lt;my:Date xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2014-07-27T23:04:34"&gt;2014-08-15&lt;/my:Date&gt;

但是,我无法在小于和大于周围进行子字符串。我的代码如下:

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("&gt;"));
            resultIndex = result.IndexOf("&lt;");
            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?");

使用<解析XML和和gt;

你有html编码的数据。

将此添加到您的方法开头以获得简单的解决方案:

xml = HttpUtility.HtmlDecode(xml);

如果你正在使用。net 4.0+,你也可以使用WebUtility.HtmlDecode,就像这个答案

从长远来看,您应该真正使用XML解析器或LINQ-XML之类的东西来访问这些数据。对于这类结构化数据,正则表达式不是一个合适的工具。