zoukankan      html  css  js  c++  java
  • 给没有节点的文字添加节点

    最近在处理xml时,发现有很多xml的 节点内有些文字需要节点,正常取值取不出来,特地写个方法解决问题

    首先,看一下我遇到了什么问题

    <父节点>
        <子节点>111</子节点>
        <子节点>222</子节点>
        <子节点>333</子节点>
        <子节点>444</子节点>
        555
    </父节点>

    这样的话 elements()这个方法就只能取到 4个子节点

    下面这个方法就是用来解决这个问题

          /// <summary>
            /// 给没有节点的添加节点
            /// </summary>
            /// <param name="xElement">要处理的节点或xml</param>
            /// <param name="XName">要添加的节点名称</param>
            /// <returns></returns>
            public static XElement CreateNewEle(XElement xElement, string XName)
            {
                string xmlTxt = xElement.ToString().Replace("/>", "/>
    ").Replace("<", "
    <");
    
                string line = string.Empty;
    
                StringReader reader = new StringReader(xmlTxt);
    
                StringBuilder xmlbuilber = new StringBuilder();
                while ((line = reader.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(line.Trim()) && !line.Contains("<") && !line.Contains("/>"))
                    {
                        line = "<临时节点>" + line + "</临时节点>";
                    }
                    if (!string.IsNullOrEmpty(line))
                    {
                        xmlbuilber.Append(line);
                    }
                }
                xElement = XElement.Parse(xmlbuilber.ToString());
                return xElement;
            }

    调用方法 :

    ele :要处理的节点或xml

    “临时节点”:要添加的节点名称

     XElement newEle = CreateNewEle(ele,"临时节点");

    处理后结果:

    <父节点>
        <子节点>111</子节点>
        <子节点>222</子节点>
        <子节点>333</子节点>
        <子节点>444</子节点>
       <临时节点>555</临时节点>
    </父节点>

    ------------------------------------------------------------------------------------------------------------------------这个是分割线------------------------------------------------------------------------------------------------------------------------

    在实际使用中,上面的方法感觉还是有一些问题的。

    问题如下:

     string xmlTxt = xElement.ToString().Replace("/>", "/>
    ").Replace("<", "
    <");

    请看这句代码

     /> 替换为 />  

     < 替换为 <   

    为换行

    > 没有替换也不能替换 

    >不替换可能出现的场景:

    <父节点>
        <子节点>111</子节点>
        <子节点>222</子节点>
        <子节点>333</子节点>
        <子节点>444</子节点> 555
    </父节点>

    >替换出现的场景:

    <父节点>
        <子节点>
        111
    </子节点> <子节点>
    222
    </子节点> <子节点>
    333</子节点> <子节点>444</子节点> 555 </父节点>

    ------------------------------------------------------------

  • 相关阅读:
    SlidingMenu官方实例分析8——CustomAnimation
    SlidingMenu官方实例分析7——SlidingContent和SlidingTitleBar区别
    SlidingMenu官方实例分析5——FragmentChangeActivity
    SlidingMenu官方实例分析4——AttachExample
    云虚拟主机和云服务器的区别
    SAP MM常用表
    dedecms 模板文件不存在,无法解析文档"的终极各种解决办法
    js代码如何测试代码运行时间
    java 连接msql数据库
    Java 创建xml文件和操作xml数据
  • 原文地址:https://www.cnblogs.com/mi21/p/11206987.html
Copyright © 2011-2022 走看看