Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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# 如何使用c获取XML文件中的节点值_C#_Xml - Fatal编程技术网

C# 如何使用c获取XML文件中的节点值

C# 如何使用c获取XML文件中的节点值,c#,xml,C#,Xml,我有一个XML文件,在这个XML中可以看到RESPONSE_数据标记。此标记还有一些内部标记。我需要获取PERSON_数据标记中的所有值。我还需要在下面的xml文件中获取所有其他值 <?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n <HUMAN_VERIFICATION xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http:

我有一个XML文件,在这个XML中可以看到RESPONSE_数据标记。此标记还有一些内部标记。我需要获取PERSON_数据标记中的所有值。我还需要在下面的xml文件中获取所有其他值

<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n
<HUMAN_VERIFICATION xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <RESPONSE_DATA>
      <RESPONSE_STATUS>
         <ERROR>100</ERROR>
         <MESSAGE>successful</MESSAGE>
      </RESPONSE_STATUS>
      <CONTACT_NUMBER>3120202456011</CONTACT_NUMBER>
      <PERSON_DATA>
         <NAME>Alex</NAME>
         <DATE_OF_BIRTH>10-9-1982</DATE_OF_BIRTH>
         <BIRTH_PLACE>Washington</BIRTH_PLACE>
         <EXPIRY>2020-12-15</EXPIRY>
      </PERSON_DATA>
      <CARD_TYPE>idcard</CARD_TYPE>
   </RESPONSE_DATA>
</HUMAN_VERIFICATION>

你可以试试这段代码,它可能对你有帮助

XmlDocument newdoc = new XmlDocument();
newdoc.InnerXml = " <?xml version=\"1.0\" encoding=\"utf-16\"?><HUMAN_VERIFICATION><RESPONSE_DATA><RESPONSE_STATUS><ERR>100</ERROR><MESSAGE>successful</MESSAGE></RESPONSE_STATUS><CONTACT_NUMBER>3120202456011</ CONTACT _NUMBER><PERSON_DATA><NAME>Alex</NAME><DATE_OF_BIRTH>10-9-1982</DATE_OF_BIRTH><BIRTH_PLACE>Washington</BIRTH_PLACE><EXPIRY>2020-12-15</EXPIRY></PERSON_DATA><CARD_TYPE>idcard</CARD_TYPE></RESPONSE_DATA></HUMAN_VERIFICATION>";

var selectnode = "HUMAN_VERIFICATION/RESPONSE_DATA/PERSON_DATA";
var nodes = newdoc.SelectNodes(selectnode);
foreach (XmlNode nod in nodes)
{
    string name   = nod["NAME"         ].InnerText;
    string dob    = nod["DATE_OF_BIRTH"].InnerText;
    string place  = nod["BIRTH_PLACE"  ].InnerText;
    string expiry = nod["EXPIRY"       ].InnerText;
    Console.WriteLine("Person: {0} {1} {2} {3}", name, dob, place, expiry);
}

你可以试试这段代码,它可能对你有帮助

XmlDocument newdoc = new XmlDocument();
newdoc.InnerXml = " <?xml version=\"1.0\" encoding=\"utf-16\"?><HUMAN_VERIFICATION><RESPONSE_DATA><RESPONSE_STATUS><ERR>100</ERROR><MESSAGE>successful</MESSAGE></RESPONSE_STATUS><CONTACT_NUMBER>3120202456011</ CONTACT _NUMBER><PERSON_DATA><NAME>Alex</NAME><DATE_OF_BIRTH>10-9-1982</DATE_OF_BIRTH><BIRTH_PLACE>Washington</BIRTH_PLACE><EXPIRY>2020-12-15</EXPIRY></PERSON_DATA><CARD_TYPE>idcard</CARD_TYPE></RESPONSE_DATA></HUMAN_VERIFICATION>";

var selectnode = "HUMAN_VERIFICATION/RESPONSE_DATA/PERSON_DATA";
var nodes = newdoc.SelectNodes(selectnode);
foreach (XmlNode nod in nodes)
{
    string name   = nod["NAME"         ].InnerText;
    string dob    = nod["DATE_OF_BIRTH"].InnerText;
    string place  = nod["BIRTH_PLACE"  ].InnerText;
    string expiry = nod["EXPIRY"       ].InnerText;
    Console.WriteLine("Person: {0} {1} {2} {3}", name, dob, place, expiry);
}

使用System.Xml.Linq非常简单直观

var xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<HUMAN_VERIFICATION xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <RESPONSE_DATA>\r\n    <RESPONSE_STATUS>\r\n      <ERROR>100</ERROR>\r\n      <MESSAGE>successful</MESSAGE>\r\n    </RESPONSE_STATUS>\r\n    <CONTACT_NUMBER>3120202456011</CONTACT_NUMBER>\r\n    <PERSON_DATA>\r\n      <NAME>Alex</NAME>\r\n     <DATE_OF_BIRTH>10-9-1982</DATE_OF_BIRTH>\r\n      <BIRTH_PLACE>Washington</BIRTH_PLACE>\r\n      <EXPIRY>2020-12-15</EXPIRY>\r\n    </PERSON_DATA>\r\n    <CARD_TYPE>idcard</CARD_TYPE>\r\n  </RESPONSE_DATA>\r\n</HUMAN_VERIFICATION>";
var document = XDocument.Parse(xml);
var name = document.Element("HUMAN_VERIFICATION").Element("RESPONSE_DATA").Element("PERSON_DATA").Element("NAME").Value;

使用System.Xml.Linq非常简单直观

var xml = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<HUMAN_VERIFICATION xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <RESPONSE_DATA>\r\n    <RESPONSE_STATUS>\r\n      <ERROR>100</ERROR>\r\n      <MESSAGE>successful</MESSAGE>\r\n    </RESPONSE_STATUS>\r\n    <CONTACT_NUMBER>3120202456011</CONTACT_NUMBER>\r\n    <PERSON_DATA>\r\n      <NAME>Alex</NAME>\r\n     <DATE_OF_BIRTH>10-9-1982</DATE_OF_BIRTH>\r\n      <BIRTH_PLACE>Washington</BIRTH_PLACE>\r\n      <EXPIRY>2020-12-15</EXPIRY>\r\n    </PERSON_DATA>\r\n    <CARD_TYPE>idcard</CARD_TYPE>\r\n  </RESPONSE_DATA>\r\n</HUMAN_VERIFICATION>";
var document = XDocument.Parse(xml);
var name = document.Element("HUMAN_VERIFICATION").Element("RESPONSE_DATA").Element("PERSON_DATA").Element("NAME").Value;
我更喜欢使用Linq而不是Xml

检查我更喜欢使用Linq而不是Xml


检查

您是否尝试过使用C处理XML的方法,或者您是否要求提供有关使用C处理XML的教程?请重新格式化您的XML。。。希望它能帮助您尝试过任何东西,或者您想要一个关于使用C处理XML的教程吗?请重新格式化您的XML。。。希望对你有帮助