这个东西你为什么不用xmldocument去操作xml文件呢,那样读取多方便

解决方案 »

  1.   

    是一个数据流,要一个个处理,得到一个结构体之后序列到类里面去,如果得不到一个完整的结构体序列会出错,
    即使使用xmldocument去操作,也要把这些数据流分割成一个个的完整格式,要把这个数据舍弃掉。
      

  2.   


    是一个数据流,要一个个处理,得到一个结构体之后序列到类里面去,如果得不到一个完整的结构体序列会出错,
    即使使用xmldocument去操作,也要把这些数据流分割成一个个的完整格式,要把这个数据舍弃掉。
      

  3.   


            private void btn_Click(object sender, RoutedEventArgs e)
            {
                string s = @"<?xml version=""1.0""?>
    <EMC xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName></ZXEMC>
      <UnitCode>单位</UnitCode>
    </EMC><?xml version=""1.0""?>
    <EMC xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
     <Command>xxxx</Command>
     <UnitName>单位</</ZXEMC><?xml version=""1.0""?>
    <EMC xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName>
      <UnitCode>单位</UnitCode>
    </EMC></ZXEMC>";
                MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</zxemc>)");
                foreach (Match m in matches)
                {
                    Console.WriteLine(m.Groups[1].Value);
                }
            }
      

  4.   

    你是要截取<?xml.*</EMC>里面的内容还是<?xml.*</ZXEMC>里面的内容MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</zxemc>)");
    //或者
    MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</emc>)");
      

  5.   

    你这个结果不符合要求:MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</zxemc>)");使用这个
    我试过了结果如下:2个对象
    对象1
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName>
      <UnitCode>单位</UnitCode>
    </EMC>
    对象2
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <Command>xxxx</Command>
     [color=#FF6600]<UnitName>单位</

    [/color]
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName>
      <UnitCode>单位</UnitCode>
    </EMC>
    红色部分都还在,我用其它方法解决了 谢谢
      

  6.   

    你这个结果不符合要求:MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</zxemc>)");使用这个
    我试过了结果如下:2个对象
    对象1
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName>
      <UnitCode>单位</UnitCode>
    </EMC>
    对象2
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
     <Command>xxxx</Command>
     [color=#FF6600]<UnitName>单位</

    [/color]
    <?xml version="1.0"?>
    <EMC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Command>xxxx</Command>
      <UnitName>单位</UnitName>
      <UnitCode>单位</UnitCode>
    </EMC>
    红色部分都还在,我用其它方法解决了 谢谢
    MatchCollection matches = Regex.Matches(s, @"(?is)(<\?xml[\s\S]*?</emc>)");这个方法