【发布时间】:2018-11-01 06:56:18
【问题描述】:
我有一个 XML 文件,我需要读取 XML 文件中特定节点的值。
代码:
public static string GetElementByName(string responseContent,string attributeName, string attributeValue)
{
string result = "";
XmlTextReader textReader = new XmlTextReader(new System.IO.StringReader(responseContent));
while (textReader.Read())
{
switch (textReader.NodeType)
{
case XmlNodeType.Element:
if (!textReader.IsEmptyElement)
{
if (textReader.GetAttribute(attributeName) == attributeValue)
{
result = textReader.ReadInnerXml();
}
}
break;
case XmlNodeType.Text:
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
break;
case XmlNodeType.Comment:
break;
case XmlNodeType.EndElement:
break;
}
}
return result;
}
在这里,我将 xml 内容作为字符串 (responseContent)、属性名称和属性值传递,以获取该特定节点的实际值。如果 xml 节点像这样,则此方法有效
<Reference ReferenceType="ABC" AssignedBy="Buyer">123</Reference>
<Reference ReferenceType="DEF" AssignedBy="Buyer">456</Reference>
var value1 = GetElementByName(xmlContent,"ReferenceType","ABC"); // value1 = 123
var value2 = GetElementByName(xmlContent,"ReferenceType","DEF"); // value2 = 456
但是现在要覆盖一个新的场景。
我有一个类似的xml
<Component>
<Classification ClassificationType="BOOK">
<SubClassification SubClassificationType="FICTION"/>
</Classification>
<Reference ReferenceType="ABC">123</Reference>
</Component>
<Component>
<Classification ClassificationType="MOVIES">
<SubClassification SubClassificationType="ROMANCE"/>
</Classification>
<Reference ReferenceType="ABC">456</Reference>
</Component>
现在,我需要调用一个函数,一个应该返回 BOOK 分类的值 123,另一个应该返回 MOVIES 分类的值 456。
如何检查节点然后提取值。
更新 #1:
让我们说如果
我调用 GetElement(xmlContent, "BOOK", "ReferenceType", "ABC"),那么我应该得到 123。
我调用 GetElement(xmlContent, "MOVIES", "ReferenceType", "ABC"),那么我应该得到 456。
【问题讨论】:
-
您能否更具体地说明您在输出中需要什么?
-
嗨@MihirDave 我已经更新了这个问题。