1
我已经在我的字符串得到了下面的XML,我使用C#2.0如何检查节点存在于XML和阅读CDATA值
string strXML ="<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040329" Category="17" Source="Kernel" Severity="2">
<tcm:Line ErrorCode="80040329" Cause="false" MessageID="16137">
<![CDATA[Unable to save Keyword (tcm:0-0-0).]]><tcm:Token>RESID_4574</tcm:Token><tcm:Token>RESID_15309</tcm:Token><tcm:Token>tcm:0-0-0</tcm:Token>
</tcm:Line>
<tcm:Line ErrorCode="80040329" Cause="true" MessageID="15200">
<![CDATA[Name must be unique for items of type: Keyword within this Category and its BluePrint context. Source or sources of conflict: tcm:236-215788-1024,tcm:237-215788-1024,tcm:241-215788-1024,tcm:243-215788-1024,tcm:423-215788-1024.]]><tcm:Token>RESID_15214</tcm:Token><tcm:Token>RESID_15309</tcm:Token><tcm:Token>RESID_15293</tcm:Token><tcm:Token>tcm:236-215788-1024,tcm:237-215788-1024,tcm:241-215788-1024,tcm:243-215788-1024,tcm:423-215788-1024</tcm:Token>
</tcm:Line>
<tcm:Details>
<tcm:CallStack>
<tcm:Location>UtilitiesBL.AssertUniqueTitle</tcm:Location>
<tcm:Location>UtilitiesBL.AssertUniqueTitle</tcm:Location>
<tcm:Location>KeywordBL.Create</tcm:Location>
<tcm:Location>XMLState.Save</tcm:Location>
<tcm:Location>Keyword.Save</tcm:Location>
</tcm:CallStack>
</tcm:Details>
</tcm:Error>"
现在我想要写一个函数,它会返回字符串值首先检查字符串strXML中是否有xml节点节点,如果没有这样的节点,则返回“valid”,否则我的函数将返回从上面的xml中获取的字符串值。
所以我的返回结果将是“无法保存关键字(tcm:0-0-0)。名称必须是唯一的类型的项目:关键字在此类别及其BluePrint上下文冲突源: tcm:236-215788-1024,tcm:237-215788-1024,tcm:241-215788-1024,tcm:243-215788-1024,tcm:423-215788-1024。“,这些文本以XML存在。
请建议!!
谢谢。
MS
好,谢谢基里尔,你能不能也请建议如何检查特定节点的字符串存在加载到XmlDocument的面前。由于我的strXML可以是xml字符串以及普通字符串取决于返回什么类型的结果,我需要使用.contains还是有其他方式 – 2012-02-13 10:53:03
@MS,我建议你检查'res.Count'属性,例如:'if(res.Count == 0){...}'。它比用'Contains'检查字符串要好。 – 2012-02-13 11:03:46
但我们如何才能获得(res.Count == 0)上传整个字符串到XmlDocument之前,请建议! – 2012-02-13 11:06:04