none
一个关于gb2312编码的问题 RRS feed

答案

  • 建议使用LINQ to XML实现查询特定标签的属性值,以此提高模块功能开发的效率。

     

    LINQ to XML 概述

    Visual Studio 2010
    在很多环境中,XML 已广泛采用为格式化数据的方式。例如,在 Web 上,在配置文件、Microsoft Office Word 文件以及数据库中,都可以看到 XML。

    LINQ to XML 经过了重新设计,是最新的 XML 编程方法。它提供文档对象模型 (DOM) 的内存文档修改功能,支持 LINQ 查询表达式。尽管这些查询表达式在语法上与 XPath 不同,但它们提供类似的功能。

    <script type="text/javascript">// <![CDATA[if (!MTPS) var MTPS = {};if (!MTPS.LocalizedStrings) MTPS.LocalizedStrings = {}; MTPS.LocalizedStrings.ExpandButtonTooltip = '展开'; MTPS.LocalizedStrings.CollapseButtonTooltip = '折叠';]]></script>

    LINQ to XML 是面向各种开发人员的。对于只想完成某项工作的普通开发人员,LINQ to XML 通过提供与 SQL 相似的查询表达式,使 XML 变得更加简单。只要稍加学习,程序员就能学会以自己选择的编程语言编写简洁、功能强大的查询。

    专业开发人员可以使用 LINQ to XML 来大幅提高他们的工作效率。通过使用 LINQ to XML,他们可以编写出表达能力更强、更为紧凑、功能更强的代码。他们可以同时对多个数据域使用查询表达式。

    LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。

    LINQ to XML 将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过 Internet 发送。但是,LINQ to XML 与 DOM 不同:它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。

    LINQ to XML 最重要的优势是它与 语言集成查询 (LINQ) 的集成。由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。

    LINQ to XML 的另一个优势是通过将查询结果用作 XElementXAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

    例如,您可能有一个典型 XML 采购单(如 示例 XML 文件:典型采购订单 (LINQ to XML) 所述)。通过使用 LINQ to XML,可以运行以下查询,以获取采购单每个项元素的部件号属性值:

    IEnumerable<string> partNos =
        from item in purchaseOrder.Descendants("Item")
        select (string) item.Attribute("PartNumber");
    

    Cedar
    2011年10月2日 1:25
    版主
  • 谢谢!已经解决。其实我想问的不是如何读取XML中特定标签的value,而是我的XML的编码是GB2312,而SL不支持该编码。

    因此用using (XmlReader reader = XmlReader.Create(streamResult))读取的时候会提示system does not support "gb2312".

    后来我先将Stream读成了string,再来获取其中的信息就行了

               var sr = new StreamReader(streamResult);

                string srResult = sr.ReadToEnd();

               using (XmlReader reader = XmlReader.Create(new StringReader(srResult)))

                {

                    reader.ReadToFollowing("encode");

                    encode = reader.ReadElementContentAsString();

     

                    reader.ReadToFollowing("decode");

                    decode = reader.ReadElementContentAsString();

                }

    2011年10月2日 1:55

全部回复

  • 建议使用LINQ to XML实现查询特定标签的属性值,以此提高模块功能开发的效率。

     

    LINQ to XML 概述

    Visual Studio 2010
    在很多环境中,XML 已广泛采用为格式化数据的方式。例如,在 Web 上,在配置文件、Microsoft Office Word 文件以及数据库中,都可以看到 XML。

    LINQ to XML 经过了重新设计,是最新的 XML 编程方法。它提供文档对象模型 (DOM) 的内存文档修改功能,支持 LINQ 查询表达式。尽管这些查询表达式在语法上与 XPath 不同,但它们提供类似的功能。

    <script type="text/javascript">// <![CDATA[if (!MTPS) var MTPS = {};if (!MTPS.LocalizedStrings) MTPS.LocalizedStrings = {}; MTPS.LocalizedStrings.ExpandButtonTooltip = '展开'; MTPS.LocalizedStrings.CollapseButtonTooltip = '折叠';]]></script>

    LINQ to XML 是面向各种开发人员的。对于只想完成某项工作的普通开发人员,LINQ to XML 通过提供与 SQL 相似的查询表达式,使 XML 变得更加简单。只要稍加学习,程序员就能学会以自己选择的编程语言编写简洁、功能强大的查询。

    专业开发人员可以使用 LINQ to XML 来大幅提高他们的工作效率。通过使用 LINQ to XML,他们可以编写出表达能力更强、更为紧凑、功能更强的代码。他们可以同时对多个数据域使用查询表达式。

    LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。

    LINQ to XML 将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过 Internet 发送。但是,LINQ to XML 与 DOM 不同:它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。

    LINQ to XML 最重要的优势是它与 语言集成查询 (LINQ) 的集成。由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。

    LINQ to XML 的另一个优势是通过将查询结果用作 XElementXAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

    例如,您可能有一个典型 XML 采购单(如 示例 XML 文件:典型采购订单 (LINQ to XML) 所述)。通过使用 LINQ to XML,可以运行以下查询,以获取采购单每个项元素的部件号属性值:

    IEnumerable<string> partNos =
        from item in purchaseOrder.Descendants("Item")
        select (string) item.Attribute("PartNumber");
    

    Cedar
    2011年10月2日 1:25
    版主
  • 谢谢!已经解决。其实我想问的不是如何读取XML中特定标签的value,而是我的XML的编码是GB2312,而SL不支持该编码。

    因此用using (XmlReader reader = XmlReader.Create(streamResult))读取的时候会提示system does not support "gb2312".

    后来我先将Stream读成了string,再来获取其中的信息就行了

               var sr = new StreamReader(streamResult);

                string srResult = sr.ReadToEnd();

               using (XmlReader reader = XmlReader.Create(new StringReader(srResult)))

                {

                    reader.ReadToFollowing("encode");

                    encode = reader.ReadElementContentAsString();

     

                    reader.ReadToFollowing("decode");

                    decode = reader.ReadElementContentAsString();

                }

    2011年10月2日 1:55
  • 谢谢您的分享,让我也受益了。


    Cedar
    2011年10月2日 8:35
    版主