zoukankan      html  css  js  c++  java
  • XmlTextReader需要注意的问题

    对于xml:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Pkboy kind="site">
      <command name="price" object="game" password="asdfasdf">
        <game name="魔兽世界">
          <server name="魔兽服务器一号">
            <item name="金币" kind="gold" quantity="12" gross="0.5005" maxdollar="99" mindollar="88" rate="6.88" />
          </server>
        </game>
      </command>
    </Pkboy>

    使用XmlTextReader进行读取:

                byte[] buffer = Encoding.UTF8.GetBytes(xml);
                using (stream = new MemoryStream(buffer))
                {
                    using (XmlTextReader str = new XmlTextReader(stream))
                    {
                        str.Read();

                        str.Read();
                        str.Read();
                        Assert.AreEqual("Pkboy", str.Name);
                        str.Read();
                        str.Read();
                        Assert.AreEqual("command", str.Name);
                        str.Read();
                        str.Read();
                        Assert.AreEqual("game", str.Name);
                        str.MoveToFirstAttribute();
                        Assert.AreEqual("魔兽世界", str.Value);
                        str.Read();
                        str.Read();
                        str.MoveToFirstAttribute();
                        Assert.AreEqual("魔兽服务器一号", str.Value);
                    }
                }

    上面的测试是正常的,也就是说3次Read()以后到了Pkboy节点。为什么呢?

    经过追踪,第一次Read()以后,到了

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>,显示节点的名称是xml,也就是把<>内的东西当成

    一个节点。 而version等都是属性,要是取这些属性,必须用MoveToFirstAttribute类似的一组方法。这里不取,再次Read(),

    然后就到了文档的"\r\n",也就是第二个Read()包含的东西是"\r\n",如果存在回车换行,那么就会被当成一个节点Read()一次。

    如果不包含"\r\n",那么就直接可以到达下一个节点。

    所以,这里因为包含了回车换行,所以,3次以后到达第一个元素Pkboy。

  • 相关阅读:
    Different AG groups have the exactly same group_id value if the group names are same and the ‘CLUSTER_TYPE = EXTERNAL/NONE’
    An example of polybase for Oracle
    use azure data studio to create external table for oracle
    Missing MSI and MSP files
    You may fail to backup log or restore log after TDE certification/key rotation.
    Password is required when adding a database to AG group if the database has a master key
    Use KTPASS instead of adden to configure mssql.keytab
    ardunio+舵机
    android webview 全屏100%显示图片
    glide 长方形图片显示圆角问题
  • 原文地址:https://www.cnblogs.com/worldreason/p/1256290.html
Copyright © 2011-2022 走看看