Replace \Update xmlNode,其中包含XML文档中提供的值 [英] Replace\Update the xmlNode with supplied value in XML document

查看:96
本文介绍了Replace \Update xmlNode,其中包含XML文档中提供的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在XML文档中,我们根据xpath搜索xmlNodes,然后我们想要用提供的值完全替换  xmlNodes。


示例


OracleXmlType具有以下数据,Xpath设置为"/ RESUME / NAME"



<?xml version =" 1.0"?>

< RESUME>

   < span style ="color:#3333ff">  < NAME> Name0< / NAME>

    < NAME> Name1< / NAME>

    < EXPERIENCE>

   &NBSP;&NBSP;&NBSP; < YEARS> 0< / YEARS>

    < / EXPERIENCE>

< / RESUME>





值我们想要替换为以下提供的字符串


< RESUME>

    < NAME> Name0< / NAME>

    < NAME> Name1< / NAME>

< / RESUME>





预期结果是


~~~~~~~~~~~~~~~


<?xml version =" ; 1.0"?>

< RESUME>

    < RESUME>

        < NAME> Name0< / NAME>

        < NAME> Name1< / NAME>

    < / RESUME>

   
< RESUME>

        &NBSP; < NAME> Name0< / NAME>

         < NAME> Name1< / NAME>

     < / RESUME>

    < EXPERIENCE>

   &NBSP;&NBSP;&NBSP; < YEARS> 0< / YEARS>

    < / EXPERIENCE>

< / RESUME>



请告诉我实现上述目标的有效方法使用.NET XML相关APIS的功能

















解决方案


以下是我用来查找xmlNodes的代码 取决于xpathExpr


但我不知道如何用提供的值替换整个xmlNode,尤其是当它具有嵌套的XML节点时,如


< RESUME>

    < NAME> Name0< / NAME>

    < NAME> Name1< / NAME>

< / RESUME>


static internal void Update(XmlDocument xmlDoc,string xpathExpr,string val)

    {

      XmlNodeList xmlNodes = null;

      xmlNodes = xmlDoc.SelectNodes(xpathExpr);

     

      if(xmlNodes!= null&& xmlNodes.Count> 0)

      {

        foreach(xmlNode中的xmlNode xmlNode)

        {


         // TODO: 


          //如何替换xmlNode 完全具有提供的价值?

        }
      }
    }


In XML document we search the xmlNodes depending on xpath and then we want to replace the xmlNodes completely with the supplied value.

for Example

OracleXmlType has the below data and Xpath is set to "/RESUME/NAME"

<?xml version="1.0"?>
<RESUME>
    <NAME>Name0</NAME>
    <NAME>Name1</NAME>

    <EXPERIENCE>
       <YEARS>0</YEARS>
    </EXPERIENCE>
</RESUME>


the value we want to replace as below which is supplied as string

<RESUME>
    <NAME>Name0</NAME>
    <NAME>Name1</NAME>
</RESUME>


the expected result is

~~~~~~~~~~~~~~~

<?xml version="1.0"?>
<RESUME>
   <RESUME>
        <NAME>Name0</NAME>
        <NAME>Name1</NAME>
    </RESUME>
   
<RESUME>
         <NAME>Name0</NAME>
         <NAME>Name1</NAME>
     </RESUME>
    <EXPERIENCE>
       <YEARS>0</YEARS>
    </EXPERIENCE>
</RESUME>

please tell me the efficient way to achieve the above functionality using the .NET XML related APIS





解决方案

Below is the code i used to find the xmlNodes  depending on xpathExpr

But I am not sure how to replace the whole xmlNode with supplied value especially when it has the nested XML nodes like

<RESUME>
    <NAME>Name0</NAME>
    <NAME>Name1</NAME>
</RESUME>

static internal void Update(XmlDocument xmlDoc, string xpathExpr, string val)
    {
      XmlNodeList xmlNodes = null;
      xmlNodes = xmlDoc.SelectNodes(xpathExpr);
     
      if (xmlNodes != null && xmlNodes.Count > 0)
      {
        foreach (XmlNode xmlNode in xmlNodes)
        {

         //TODO : 

          //how to replace the xmlNode  completely with provided value ?
        }
      }
    }


这篇关于Replace \Update xmlNode,其中包含XML文档中提供的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆