IF声明困境

时间:2017-07-27 21:12:20

标签: c# xml

我正在从XML文件创建一个.csv报告,如下所示:

<Registration>
    <REGISTRATIONID>1</REGISTRATIONID>
    <TYPE>2</TYPE>
</Registration>
<Registration>
    <REGISTRATIONID>2</REGISTRATIONID>
    <TYPE>3</TYPE>
</Registration>

如果在XML文件中<TYPE>3</TYPE>标记中至少有<Registration>,则如何获取值为“True”的字符串,如果没有,则为“FALSE”。< / p>

只需获取每个<REGISTRATIONID>的值,我就会这样做

string type = "";

foreach (CGXML.RegistrationRow rr in fisier.Registration)
{
    type = rr.TYPE.ToString
    sout.WriteLine(string.Concat(new string[] { "\"", type, "\"" })); 
}

但遗憾的是,凭借我目前的技能,即使每个人都无法使其发挥作用 <REGISTRATIONID>“正确/错误”声明......

所以,这个代码,或者我应该从哪里开始阅读以学习/理解这将是非常有帮助的。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

欢迎使用Stack Overflow!

首先你的xml无效。如果您要发布问题,则需要提供足够的信息,以便用户可以使用该信息来复制您的方案。

无论如何想象这是你的文件:

<?xml version="1.0"?>
<stuff>
    <Registration>
        <REGISTRATIONID>1</REGISTRATIONID>
        <TYPE>2</TYPE>
    </Registration>
    <Registration>
        <REGISTRATIONID>2</REGISTRATIONID>
        <TYPE>3</TYPE>
    </Registration>
</stuff>

以下是阅读方法。我基于TYPE节点的值做出了错误的判断。您可以使用该代码为另一个节点执行此操作。您可以使用Linq减少代码,但为了清晰起见,我保持简单。这是返回包含&#34; True&#34;的字符串的方法。如果任何TYPE节点在整个文件中有2或3个:

public static String SearchFile(string path)
{
    var document = XDocument.Parse(File.ReadAllText(path));

    foreach (var thisRegistration in document.Element("stuff").Elements("Registration"))
    {
        var typeValue = thisRegistration.Element("TYPE").Value;
        if (typeValue == "2" ||
            typeValue == "3")
        {
            return "True";
        }
    }

    return "False";
}

以下是如何使用代码:

var answer = SearchFile("PathToYourFile.xml"); // Replace with your filepath
Console.WriteLine("Answer: {0}", answer);