使用<解析XML和>

时间:2014-08-12 22:04:09

标签: c# xml regex

我尝试删除一些XML并仅获取与字段相关的值,但XML不使用小于和大于符号。我尝试在字段名称周围进行子串(在下面的例子中是Date),这样可以正常工作。

    <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";
        }
    }

我已经尝试过一个测试项目并且它工作正常但我总是得到索引应该在我的实际Web服务中大于0。我也尝试使用正则表达式替换字符,但这也没有用。

result = Regex.Replace(result, "&(?!(amp|apos|quot|lt|gt);)", "hidoesthiswork?");

1 个答案:

答案 0 :(得分:8)

您拥有HTML编码数据。

在方法的开头添加此项以获得简单的解决方案:

xml = HttpUtility.HtmlDecode(xml);

如果你在this answer中使用.NET 4.0+,也可以使用WebUtility.HtmlDecode

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