-1

在 C# 中:

我有一组文本行(应该是 XML),它们被发送到要添加到 XML 文档中的函数。每行都是一个简单的块,如以下 3 个示例:

<AAA f="1" g="3"> </AAA>
<AAA f="2" g="2"> </AAA>
<AAA f="3" g="3"> </AA     <-- Oops a bad one!

我需要检查每一行以查看它是否是有效的 XML,然后才能将其接受为完整的 XML 文档,因为有些行是坏的,但我们想要所有好的。

ROW1: good
ROW2: good
ROW3: bad
ROW4: good

在这种情况下,我们只需要 ROW1,2 和 4。

那么,当行字符串不是完整文档时,如何检查行字符串是否是有效的 XML?

4

3 回答 3

4

我会尝试这样的事情:

public static bool IsValid(this string XML)
{
    try
    {
        XElement temp = XElement.Parse(XML);
    }
    catch (FormatException)
    {
        return false;
    }
    catch (XmlException)
    {
        return false;
    }
    return true;
}
于 2013-02-12T18:05:13.613 回答
0

您可以使用 XmlTextReader 验证 XML 文档片段(这就是您的行),但您必须使用特殊的阅读器设置创建阅读器


XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlReaderSettings settings = new XmlReaderSettings() {
    ConformanceLevel = ConformanceLevel.Fragment
};
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);

XmlReaderSettings 一致性级别

于 2013-02-12T18:29:21.377 回答
-3

我会这样做。

private static bool IsValidXml(string xmlToCheck)
        {
            var doc = new XmlDocument();
            try
            {
                doc.LoadXml(xmlToCheck);
                return true;
            }
            catch (Exception ex)
            {
                //catch ex.
                return false;
            }
        }
于 2013-02-12T18:11:11.810 回答