如何使用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"
            }
        }

输入后期数据:

<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>

请帮帮我…:)

我不知道如何处理给定的输出,我主要需要单独验证项目,然后存储在xml文件中。

我为我的英语道歉。

谢谢。

不幸的是,这个问题相当宽泛,但一般来说,一切都可以用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>

相关内容

  • 没有找到相关文章

最新更新