-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 に答える