首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

C# xml处置

2013-02-02 
C# xml处理xml结构如下:?xml version1.0 encodingUTF-8 standaloneno ?cfgfile:cmconfigdataf

C# xml处理
xml结构如下:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<cfgfile:cmconfigdatafile xmlns:RAN="http://www.huawei.com/specs/huawei_cme_GERAN_NRM_baseline_all" xmlns:cfgfile="http://www.huawei.com/specs/huawei_cme_RAN6.0_BulkCM_FileFormat_baseline_1.0.0" xmlns:gn="http://www.huawei.com/specs/huawei_CME_GenericNRMdescription_baseline_1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.huawei.com/specs/huawei_cme_GERAN_NRM_baseline_all CMEERAN_NRM_Spec_ALL.xsd http://www.huawei.com/specs/huawei_cme_RAN6.0_BulkCM_FileFormat_baseline_1.0.0 CMEERANcfgCMData_spec.xsd http://www.huawei.com/specs/huawei_CME_GenericNRMdescription_baseline_1.0.0 CMEERANGenericNRM.xsd">

  <cfgfile:fileheader filetype="ExportFile"/>
  <cfgfile:subsession neid="10.144.255.46" netype="eNodeBNE" neversion="DBS3900 LTE V100R005C00" opmode="BreakonFailure">
    <gn:DataContainer>
      <RAN:eNodeB_3.0>
        <ENODEB>
          <attributes>
            <AUTOPOWEROFFSWITCH>1</AUTOPOWEROFFSWITCH>
            <ENODEBID>360</ENODEBID>
            <GCDF>0</GCDF>
            <LATITUDE>0</LATITUDE>
            <LOCATION>Testbed</LOCATION>
            <LONGITUDE>0</LONGITUDE>
            <NAME>360</NAME>
            <POWEROFFTIME>00:00:00</POWEROFFTIME>
            <POWERONTIME>06:00:00</POWERONTIME>
          </attributes>
          <TRANSPORT>
            <IPRT>
              <attributes>
                <CN>0</CN>
                <DESCRI>OAM IKE tunnel</DESCRI>
                <DSTIP>172.27.13.84</DSTIP>
                <DSTMASK>255.255.255.255</DSTMASK>
                <NEXTHOP>10.80.217.49</NEXTHOP>
                <PREF>50</PREF>
                <RTTYPE>0</RTTYPE>
                <SBT>0</SBT>
                <SN>7</SN>
                <SRN>0</SRN>


                <IFT>-1</IFT>
                <IFNO>-1</IFNO>
              </attributes>
            </IPRT>
            <MME>
              <attributes>
                <CNOPERATORID>0</CNOPERATORID>
                <DESCRIPTION>HUSNMUN1</DESCRIPTION>
                <FIRSTSIGIP>10.80.245.37</FIRSTSIGIP>
                <LOCPORT>36412</LOCPORT>
                <MMEID>0</MMEID>
                <SECSIGIP>0.0.0.0</SECSIGIP>
              </attributes>
            </MME>
          </TRANSPORT>
        </ENODEB>
      </RAN:eNodeB_3.0>
    </gn:DataContainer>
  </cfgfile:subsession>
  <cfgfile:ENODEBTEMPLATERSC>
      <gn:attributes>
      <gn:SERIES>BTS3900AL_LTE</gn:SERIES>
      <gn:VERSION>BTS3900AL LTE V100R004C00SPC270</gn:VERSION>
      <gn:TEMPLATENAME>BTS3900AL_BTS3900AL_FDD_S111_10M_2T2R</gn:TEMPLATENAME>
      </gn:attributes>
  </cfgfile:ENODEBTEMPLATERSC>
  <cfgfile:ENODEBTEMPLATERSC>
      <gn:attributes>
      <gn:SERIES>BTS3900AL_LTE</gn:SERIES>
      <gn:VERSION>BTS3900AL LTE V100R004C00SPC270</gn:VERSION>
      <gn:TEMPLATENAME>BTS3900AL_BTS3900AL_FDD_S111_20M_2T2R</gn:TEMPLATENAME>
      </gn:attributes>
  </cfgfile:ENODEBTEMPLATERSC>
  
  
  <cfgfile:filefooter datetime="2013-01-23 10:47:36"/>

</cfgfile:cmconfigdatafile>

如果获取<RAN:eNodeB_3.0></RAN:eNodeB_3.0>当中的节点以及如何在包含<attributes>的父节点添加modifier=“create”操作,比如
            <IPRT>
              <attributes>
                <CN>0</CN>
                <DESCRI>OAM IKE tunnel</DESCRI>
                <DSTIP>172.27.13.84</DSTIP>


                <DSTMASK>255.255.255.255</DSTMASK>
                <NEXTHOP>10.80.217.49</NEXTHOP>
                <PREF>50</PREF>
                <RTTYPE>0</RTTYPE>
                <SBT>0</SBT>
                <SN>7</SN>
                <SRN>0</SRN>
                <IFT>-1</IFT>
                <IFNO>-1</IFNO>
              </attributes>
            </IPRT>
添加modifier=“create”后变成:
            <IPRT modifier="create">
              <attributes>
                <CN>0</CN>
                <DESCRI>OAM IKE tunnel</DESCRI>
                <DSTIP>172.27.13.84</DSTIP>
                <DSTMASK>255.255.255.255</DSTMASK>
                <NEXTHOP>10.80.217.49</NEXTHOP>
                <PREF>50</PREF>
                <RTTYPE>0</RTTYPE>
                <SBT>0</SBT>
                <SN>7</SN>
                <SRN>0</SRN>
                <IFT>-1</IFT>
                <IFNO>-1</IFNO>
              </attributes>
            </IPRT>
xml c#
[解决办法]


XmlDocument xdoc = new XmlDocument();
 xdoc.LoadXml("...");
 XmlNodeList targetNodesList = xdoc.SelectNodes("//RAN:eNodeB_3.0//attributes", GetNameSpaceManager(xdoc));
 foreach (XmlNode xmlNode in targetNodesList)
 {
     XmlAttribute xmlAttribute = xdoc.CreateAttribute("modifier");


     xmlAttribute.Value = "create";
     xmlNode.ParentNode.Attributes.Append(xmlAttribute);
 }


GetNameSpaceManager方法

protected static XmlNamespaceManager GetNameSpaceManager(XmlDocument Document)
{
    XmlNamespaceManager objXmlNamespaceManager = new XmlNamespaceManager(Document.NameTable);
    objXmlNamespaceManager.AddNamespace("RAN", Document.DocumentElement.GetNamespaceOfPrefix("RAN"));
    return objXmlNamespaceManager;
}

热点排行