怎么判斷是不是XML語句呢?
比如:<SCHEDULE_FILE><SCH_FILE>XXXXXXXXXX</SCH_FILE><SCH_STATUS>XXXXX</SCH_STATUS></SCHEDULE_FILE>

解决方案 »

  1.   

    你用XmlDocument加载一下,出现异常就是不合法
      

  2.   

    用正则基本无法实现:using System.Xml; 
    string s="<SCHEDULE_FILE> <SCH_FILE>XXXXXXXXXX </SCH_FILE> <SCH_STATUS>XXXXX </SCH_STATUS> </SCHEDULE_FILE>";
    xmlDoc=new XmlDocument();
    try
    {
       xmlDoc.LoadXml(s);
    }
    catch
    {
       //不符合
    }
      

  3.   

    这个不好说吧,你的html中的内容也可以能被认为是xml,差不多的
    正则表达式是好东西,但他不是万能的
    正则表达式是用来操作字符串的,处理字符串相关的
    不是用来判断类型的
      

  4.   


    xml格式的程序涉及到一个递归判断的功能(xml里面有n层),正则好像不能实现这个功能
      

  5.   

    楼主的问题应该用XML 架构正则表达式来解决。
    XML 架构正则表达式与 pattern 方面一起使用,提供对符合定义的模式的字符串的约束或限制。pattern 方面是对数据类型的值空间的约束,这是通过将词法空间约束为匹配特定模式的文本实现的。pattern 的值必须是正则表达式。Pattern 用于将值空间约束为由匹配特定正则表达式的文本表示的值。 示例 
    以下示例定义一个用户导出的数据类型,该数据类型创建美国邮政编码的表示形式,该表示形式被限制为与特定正则表达式匹配的字符串。 输入文件:T.xml 
    Xml 复制代码
    <zips xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="t.xsd">
      <zip>12345</zip>
      <zip>12345-1234</zip>
    </zips>
     XML 架构:T.xsd 
    Xml 复制代码
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
        <xs:element name="zips">
      <xs:complexType>
        <xs:sequence maxOccurs="unbounded">
          <xs:element name="zip" type="better-us-zipcode"></xs:element>
        </xs:sequence>
      </xs:complexType>
        </xs:element>
        <xs:simpleType name="better-us-zipcode">
            <xs:restriction base="xs:string">
                <xs:pattern value="[0-9]{5}(-[0-9]{4})?"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:schema>
    正则表达式中使用以下两种类型的字符:元字符和常规字符。元字符为下列字符之一:.、\、?、*、+、{、}、(、)、[ 或 ]。这些字符在正则表达式中具有特殊含义,但这些字符可从表示只包含其自身的字符串集的原子转义。转义的元字符具有常规字符的行为。常规字符为不是元字符的任何 XML 字符。在正则表达式中,一个常规字符是一个原子,它表示只包含其自身的单字符串集。以下主题描述 XML 架构正则表达式。 http://msdn.microsoft.com/zh-cn/library/ms256481(VS.80).aspx
      

  6.   

    我就是想判斷<SCHEDULE_FILE>是否有對應的</SCHEDULE_FILE>存在
      

  7.   

    不知楼主的XML怎么定义,如果只是匹配某个XML标签内的所有子标签是否匹配,正则也可以解决。(这里认为如果所有标签都匹配就是XML)
    string result = "<SCHEDULE_FILE> <SCH_FILE>XXXXXXXXXX </SCH_FILE> <SCH_STATUS>XXXXX </SCH_STATUS> </SCHEDULE_FILE>"; 
    bool blResult = Regex.IsMatch(result, @"^\s*<SCHEDULE_FILE[^>]*>[^<>]*(((?'tag' <\w+[^>]*>)[^<>]*)+((?'-tag' </\w+>)[^<>]*)+)*(?(tag)(?!))</SCHEDULE_FILE>\s*$", RegexOptions.IgnoreCase);
      

  8.   

    using System.Xml; 
    string s="<SCHEDULE_FILE> <SCH_FILE>XXXXXXXXXX </SCH_FILE> <SCH_STATUS>XXXXX </SCH_STATUS> </SCHEDULE_FILE>";
    xmlDoc=new XmlDocument();
    try
    {
       xmlDoc.LoadXml(s);
    }
    catch
    {
       //不符合
    }
      

  9.   


    如果只是这个需求的话,没必要用正则,只要用if判断一下就可以了
    if (yourStr.StartsWith("<"))这个需求可以用平衡组+循环来做但既然是XML的东东,最好是用XML的方法来做,除非你是想对不闭合的标签进行闭合操作