2014-09-25 70 views
0

我有程序与网站的XML格式与命名空间的响应。如何使用xml节点

示例程序:

 string responsedata;//response data from website 


     //Creat new XMLdoc object for response data 
     XmlDocument ResponseDataXml = new XmlDocument(); 
     ResponseDataXml.InnerXml= responsedata; 
     XmlNamespaceManager xnsm = new XmlNamespaceManager(ResponseDataXml.NameTable); 
     xnsm.AddNamespace("ps","http://example.com/namespace/ps"); 


     //create xml document fro validating DTD 
     XmlDocument ValidateXml = new XmlDocument(); 

     //select Nodes <ps:results> ... <result> 
     XmlNodeList NodesResults = ResponseDataXml.SelectNodes("ps:results/result"); 

     foreach (XmlNode node in NodesResults) 
     { 
      ValidateXml.InnerText= ""; 
      ValidateXml.InnerText += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 
      ValidateXml.InnerText += "<!DOCTYPE SouborN1A SYSTEM \"validate_dtd.dtd\">"; 
      ValidateXml.InnerText+=node.InnerXml; 
      ValidateXml.Save("validate_temp.xml"); 

      if (validate("validate_temp.xml"))//validate() return true if document is valid 
      { 
       Console.WriteLine("Result:" + node.Attributes["id"] + " is valid !!!!!"); 
       // here i can append "result" node in new xml document "Valid_result.xml" 
      } 
      else 
      { 
       Console.WriteLine("Result:"+ node.Attributes["id"] + "i invalid !!!!!"); 
       // here i can append "result" in new xml document invalid result in to "invalid_result.xml" 
      } 
     } 

输入POSTDATA:

<ps:report xmlns:ps="example.com....."> 
    <results xmlns:ps="example.com....." ps:Identifikation="999999"> 
     <result id="11125"> 
     ....... 
     </result> 
     <result id="1100"> 
     ....... 
     </result> 
     <result id="111999055"> 
     ....... 
     </result> 
     <result id="100000"> 
     ....... 
     </result> 
    </results> 
</ps:report> 

请帮我... :)

我不知道如何着手,和工作与给定的输出, 我需要主要验证该项目分开,然后存储在一个XM l文件。

我为我的英语道歉。

谢谢。

回答

0

不幸的是,这个问题相当广泛,但一般来说,一切都可以用C#中的XML库完成。例如,使用XmlDocument类创建元素,然后简单地将这些元素附加到现有节点。

class Program 
{ 
    static void Main(string[] args) 
    { 
     var output = new XmlDocument(); 
     output.AppendChild(output.CreateXmlDeclaration("1.0", "utf-8", null)); 

     var xmlns = new XmlNamespaceManager(output.NameTable); 

     var root = output.CreateElement("ps", "report", "http://example.com/namespace/ps"); 

     var list = output.CreateElement("ps", "results", "http://example.com/namespace/ps"); 
     list.Attributes.Append(output.CreateAttribute("Identifikation")); 
     list.Attributes[0].Value = "999999"; 
     root.AppendChild(list); 

     var item = output.CreateElement("ps", "result", "http://example.com/namespace/ps"); 
     item.Attributes.Append(output.CreateAttribute("id")); 
     item.Attributes[0].Value = "11125"; 
     list.AppendChild(item); 

     //TODO: Append more validation messages. 

     output.AppendChild(root); 

     output.WriteTo(new XmlTextWriter(Console.Out)); 
     System.Console.ReadLine(); 
    } 
} 

可生产像这样的文件:

<?xml version="1.0" encoding="utf-8"?> 
<ps:report xmlns:ps="http://example.com/namespace/ps"> 
    <ps:results Identifikation="999999"> 
     <ps:result id="11125" /> 
    </ps:results> 
</ps:report>