读书人

C# xml处置

发布时间: 2013-02-02 12:27:16 作者: rapoo

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;
}

读书人网 >.NET

热点推荐