我用
XmlTextReader aXmlTextReader = new XmlTextReader(XmlFileName);
的方式读取xml,xml里面有很多binhex编码的图片,我利用
aXmlTextReader.ReadBinHex
的方法读取并转换成图片xml的格式是这样的 <图片1>....</图片1><图片2>......<图片2>我用while (aXmlTextReader.Read())来循环读取,判断Nodetype和节点名字来判断,
但是我单步跟踪发现,读取的顺序是 "<图片1>"→"图片1节点内容"→"</图片2>"
好像没有认为<图片2>是一个节点,当我在“</图片1><图片2>”之间加一个回车,这个问题就正常了但是,这个xml是另外一个地方传送过来的,这个文件我是改不了的。我想问一下,有没有什么方法解决这个问题,或者,有没有.net 有没有整理xml为正规格式的方法之类的呢?

解决方案 »

  1.   

     XmlReader reader = XmlReader.Create("d:\\aa.xml");
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {                    if (reader.Name == "图片1")
                        {                    }
                        if (reader.Name == "图片2")
                        {                    }                }
                }
    这样读梅问题。关键是你的xml有错误<图片1>.... </图片1> <图片2>...... </图片2> 要不就用xmldocument 的xmlpath
      

  2.   

    技术层面难解决的问题,不一定非在技术层面解决。
    如果上游传过来的东西错的为什么要你自己来承担?
    XML格式如果良好的话,xmlreader是不会 忽略任何一个节点的。
    要求他们传过来一个格式良好的XML ,或者按照你给的SCHEMA 传XML
      

  3.   

    对不起对不起,实在抱歉,那个是我写错了,人家就是</图片2>
      

  4.   

    如果xml不太大的话,还是建议使用XmlDocument
      

  5.   

    XmlDocument 有ReadBinHex 的功能嘛?我主要是要用到这个功能的,请高手指点
      

  6.   

    <图片2>...... <图片2>不是个节点啊,应该<图片2>...... </图片2>
    可以用
    XMLDocument来读取
      

  7.   

    楼主后来说了,就是 <图片2>......  </图片2>  他自己写错了另外,XMLDocument没有binhex,所以不能用这个
      

  8.   

    用XMLDocument把数据string取出来,不一定要用aXmlTextReader.ReadBinHex ,直接用XmlConvert.FromBinHexString一样可以得到buffer byte[]