Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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#_.net_Xml - Fatal编程技术网

C# 用c语言处理xml#

C# 用c语言处理xml#,c#,.net,xml,C#,.net,Xml,如果我想使用c#在xml中添加、更新或删除节点,怎么做?我的xml如下所示。我不想要transactionID节点。我想在corelationID节点之后添加一个名为XML的节点 <?xml version="1.0" ?> <GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope"> <EnvelopeVersion>2.0</EnvelopeVersion> <

如果我想使用c#在xml中添加、更新或删除节点,怎么做?我的xml如下所示。我不想要
transactionID
节点。我想在
corelationID
节点之后添加一个名为
XML
的节点

<?xml version="1.0" ?>
<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
    <EnvelopeVersion>2.0</EnvelopeVersion>
    <Header>
        <MessageDetails>
            <Class>HMRC-VAT-DEC</Class>
            <Qualifier>poll</Qualifier>
            <Function>submit</Function>
            <TransactionID />
            <CorrelationID>1B93D48C02D740C6B79DE68A27F3ADE5</CorrelationID>
            <ResponseEndPoint PollInterval="10">https://secure.dev.gateway.gov.uk/poll</ResponseEndPoint>
            <GatewayTimestamp>2011-04-05T07:41:43.018</GatewayTimestamp>
        </MessageDetails>
        <SenderDetails />
    </Header>
    <GovTalkDetails>
        <Keys />
    </GovTalkDetails>
    <Body />
</GovTalkMessage>

2
HMRC-VAT-DEC
投票
提交
1B93D48C02D740C6B79DE68A27F35
https://secure.dev.gateway.gov.uk/poll
2011-04-05T07:41:43.018

最容易使用的是LINQ到XML。例如:

XDocument doc = XDocument.Load("file.xml");
XNamespace ns = "http://www.govtalk.gov.uk/CM/envelope";

// Remove TransationID
XElement transactionElement = doc.Descendants(ns + "TransactionID").Single();
transactionElement.Remove();

// Add XML:
XElement correlationElement = doc.Descendants(ns + "CorrelectionID").Single();
XElement newElement = new XElement(ns + "XML");
correlationElement.AddAfterSelf(newElement);

// Save back
doc.Save("new-file.xml");
你需要

XMLNode.InsertAfter(newChildNode,referenceChildNode)
这将启动您:

//加载XML
xmldocumentxml=新的XmlDocument();
Load(Server.MapPath(“AddDeleteUpdate.xml”);
XmlNamespaceManager xmlns=新的XmlNamespaceManager(documentXML.NameTable);
AddNamespace(“bk”http://www.govtalk.gov.uk/CM/envelope");
//识别父节点,即
XmlNode nodeMessage=documentXML。选择singlenode(//bk:GovTalkMessage/bk:Header/bk:MessageDetails),xmlns);
//删除节点。
XmlNode nodeTransactionID=documentXML.SelectSingleNode(//bk:GovTalkMessage/bk:Header/bk:MessageDetails/bk:TransactionID),xmlns);
nodeMessage.RemoveChild(nodeTransactionID);
//创建要添加的新XML节点。
XmlNode controlAttrNode=null;
controlAttrNode=documentXML.CreateElement(“转换”);
controlAttrNode.InnerText=“XML”;
controlAttrNode.Attributes.RemoveAll();
//获取需要添加的节点对象。
XmlNode nodeCorrelation=documentXML.SelectSingleNode(//bk:GovTalkMessage/bk:Header/bk:MessageDetails/bk:CorrelationID),xmlns);
//在后面插入节点。
nodeMessage.InsertAfter(controlAttrNode,nodeCorrelation);
documentXML.Save(Server.MapPath(“AddDeleteUpdate.xml”);

我正在使用Framework 2.0。所以不可能使用Linq。还有其他方法吗???@shakul:是的,您可以使用XmlDocument和XmlElement。但代码将更加丑陋:(
//Load the XML
    XmlDocument documentXML = new XmlDocument();
    documentXML.Load(Server.MapPath("AddDeleteUpdate.xml"));

    XmlNamespaceManager xmlns = new XmlNamespaceManager(documentXML.NameTable);
    xmlns.AddNamespace("bk", "http://www.govtalk.gov.uk/CM/envelope");

    //Identify the parent node i.e <MessageDetails>
    XmlNode nodeMessage = documentXML.SelectSingleNode("//bk:GovTalkMessage/bk:Header/bk:MessageDetails", xmlns);

    //Delete the node.
    XmlNode nodeTransactionID = documentXML.SelectSingleNode("//bk:GovTalkMessage/bk:Header/bk:MessageDetails/bk:TransactionID", xmlns);
    nodeMessage.RemoveChild(nodeTransactionID);

    //Create the new XML noded to be added.
    XmlNode controlAttrNode = null;
    controlAttrNode = documentXML.CreateElement("Transformation");
    controlAttrNode.InnerText = "XML";
    controlAttrNode.Attributes.RemoveAll();

    //Get the node object to where it need to be added.
    XmlNode nodeCorrelation = documentXML.SelectSingleNode("//bk:GovTalkMessage/bk:Header/bk:MessageDetails/bk:CorrelationID", xmlns);
    //Insert the node after.
    nodeMessage.InsertAfter(controlAttrNode, nodeCorrelation);

    documentXML.Save(Server.MapPath("AddDeleteUpdate.xml"));