Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从XML文档C中提取标记值#_C#_Xml_Xml Parsing - Fatal编程技术网

C# 从XML文档C中提取标记值#

C# 从XML文档C中提取标记值#,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我有一个XML文件,从中只提取标记中的属性值。XML在这种结构中看起来有点像 <customer> <customerMiddleInitial>W</customerMiddleInitial> <name> <FirstName>XXXXXXXX</FirstName> <LastName> YYYYYYYY</LastName> </name>

我有一个XML文件,从中只提取标记中的属性值。XML在这种结构中看起来有点像

<customer> 
    <customerMiddleInitial>W</customerMiddleInitial> 
<name>
      <FirstName>XXXXXXXX</FirstName>
      <LastName> YYYYYYYY</LastName>
</name>
    <customerBirth>1983-01-01</customerBirth> 
    <customerWorkPhone>020 1234567</customerWorkPhone> 
    <customerMobilePhone>0799 1234567</customerMobilePhone> 
    <previousCust>0</previousCust> 
    <timeOnFile>10</timeOnFile> 
    <customerId>CUST123</customerId>
</customer>

W
XXXXXXXX
YYYYYY
1983-01-01 
020 1234567 
0799 1234567 
0
10
卡斯特123
所以,我想提取标签之间的所有细节。预期输出应为所有客户详细信息

如何在C#中实现这一点? 任何帮助都将不胜感激

XmlDocument DOC = new XmlDocument();
DOC.Load("LoadYourXMLHere.xml");
XmlNodeList ParentNode = DOC.GetElementsByTagName("customer");
foreach (XmlNode AllNodes in ParentNode)
{
 if (ParentNode == DOC.GetElementsByTagName("customerMiddleInitial"))
{
    customer.Initial = AllNodes["customerMiddleInitial"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("name"))
{
    customer.FirstName= AllNodes["FirstName"].InnerText;
    customer.LastName= AllNodes["LastName"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("customerBirth"))
{
    customer.Birthdate= AllNodes["customerBirth"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("customerWorkPhone"))
{
    customer.WorkPhone= AllNodes["customerWorkPhone"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("customerMobilePhone"))
{
    customer.MobilePhone = AllNodes["customerMobilePhone"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("previousCust"))
{
    customer.PreviousCust= AllNodes["previousCust"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("timeOnFile"))
{
    customer.TimeOnFile= AllNodes["timeOnFile"].InnerText;
}
if (ParentNode == DOC.GetElementsByTagName("customerId"))
{
    customer.ID= AllNodes["customerId"].InnerText;
}
} 
创建一个客户模型并在C#中执行上述xml解析

真诚地

蒂亚古·拉詹德兰


**如果答案有帮助,请将其标记为答案;如果答案没有帮助,请取消标记。

首先,您需要看到这一点

建模时,只需使用此代码将反序列化的xml转换为对象,然后使用模型处理数据。这很简单

    public static T FromXml<T>(String xml)
    {
        T returnedXmlClass = default(T);

        try
        {
            using (TextReader reader = new StringReader(xml))
            {
                try
                {
                    returnedXmlClass =
                            (T)new XmlSerializer(typeof(T)).Deserialize(reader);
                }
                catch (InvalidOperationException)
                {
                    // String passed is not XML, simply return defaultXmlClass
                }
            }
        }
        catch (Exception ex)
        {
        }

        return returnedXmlClass;
    }
publicstatict FromXml(字符串xml)
{
T returnedXmlClass=默认值(T);
尝试
{
使用(TextReader=new StringReader(xml))
{
尝试
{
returnedXmlClass=
(T) 新的XmlSerializer(typeof(T))。反序列化(reader);
}
捕获(无效操作异常)
{
//传递的字符串不是XML,只需返回defaultXmlClass即可
}
}
}
捕获(例外情况除外)
{
}
returnedXmlClass;
}
和使用

var model = FromXml<customer>(yourXmlString);
var model=FromXml(yourXmlString);

如何在C#中解析XML:我想你会在上面的链接中找到答案。没有任何你在开始时遇到的代码尝试,这只是许多旧的“如何在C#中解析XML”类问题的重复。。。