【问题标题】:Parsing XML File To Strings in C#在 C# 中将 XML 文件解析为字符串
【发布时间】:2015-07-10 00:23:23
【问题描述】:

我正在编写一个程序,我试图从 XML 文件中获取信息,将其分解并将信息存储在 4-5 个不同的字符串中。这是我必须获取 XML 文件的代码。

private void getVersionXML()
{
    sVersionConfigPath = sLocationKey + "Core\\config.xml"; //Path to XML File
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(sVersionConfigPath); //Load config.xml
    XmlNodeList xmlNodes = xmlDoc.GetElementsByTagName("PrimaryDatabase");
    foreach (XmlNode xmlNode in xmlNodes)
    {
        label1.Text = xmlNode.SelectSingleNode("database").InnerText; //Breaks Here
    }

}

这是 XML 文件的样子。

<ProgXML>
    <PrimaryDatabase Updating="N">
        <Database Driver="SQL Server" Server="serverName" User="sa" Password="Iyp4kvRIS7Orl+NjkhIjvg==" Database="dbName" Owner="" Port="" UncBase="" ImpUser="" />
        <DataExists Action="Reset" When="5/20/2015 3:17:36 PM" />
        <TableCollection Name="Core" Who="CPUser" ProcessID="0" ProcessName="" Status="Complete" When="5/20/2015 3:17:47 PM" LayoutVersion="39" DataVersion="39" />
        <TableCollection Name="Prog" Who="CPUser" ProcessID="0" ProcessName="" Status="Complete" When="5/20/2015 3:17:47 PM" LayoutVersion="38" DataVersion="38" />
    </PrimaryDatabase>
</ProgXML>

基本上我只是想获取&lt;Database /&gt; 标签中显示的所有内容并将其存储到一个字符串中(或者在这种情况下,只需打印到一个标签以进行调试)。

但是,我在上面用NullReferenceException 评论“对象引用未设置为对象的实例”时,代码中断了。而且我不太确定我哪里出错了。任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: c# xml parsing file-io tostring


    【解决方案1】:

    你可以使用 Linq2Xml

    var xDoc = XDocument.Load(filename);
    var dict = xDoc.Descendants("Database")
               .First()
               .Attributes()
               .ToDictionary(x => x.Name, x => x.Value);
    

    如果您只希望这些值用于调试目的,

    var str = string.Join("; ", xDoc.Descendants("Database")
                                .First()
                                .Attributes()
                                .Select(x => x.Name + "=" + x.Value));
    

    【讨论】:

      【解决方案2】:

      你的DataBase节点没有值,只有Driver、Server、...等属性

      检索属性值:

       string driver = xmlNode.SelectSingleNode("database").Attributes["Name"] ;
      

      【讨论】:

      • 正是我一直在寻找的,就想知道标签内的标签被称为什么。唯一的问题是您无法将字符串转换为 XMLAttribute,您必须在行尾调用 .Value
      【解决方案3】:

      看起来这是您的特定问题的大小写问题:(它是 Xml 中的“数据库”和 C# 中的“数据库”。)

      如前所述,LINQ to Xml 也是近来的发展方向。

      此外,如果您只想要元素及其所有内容的原始文本表示,请考虑使用“OuterXml”属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多