Remove Nodes Depending on Dynamic ID, C#, XML - c#

I have this XML File
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Mobiles>
<Mobile ID="98a2d0b9c2661725a7486423ebd94abdef53ed89051ff5ac7a9c63a4b2a99d7a" RegDate="26/05/2017">
<FullName>Galaxy S-4</FullName>
<Vendor>Samsung</Vendor>
<Date>2010</Date>
<Price>30000SYP</Price>
<Weight>5g</Weight>
<Features>All</Features>
<Notifecations></Notifecations>
<Picture>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</Picture>
</Mobile>
<Mobile ID='00283f5aa9c0c68c342c02977051757a7faae0ee70b086e628da7cc5baef2100' RegDate="26/05/2017">
<FullName>6600</FullName>
<Vendor>Nokia</Vendor>
<Date>2006</Date>
<Price>200SYP</Price>
<Weight>10g</Weight>
<Features>blutooth</Features>
<Notifecations></Notifecations>
<Picture>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</Picture>
</Mobile>
</Mobiles>
When I try to remove Mobile element depending on IDtextbox.text rather than static value in XPath expression it doesn't execute
I'm using Windows application in Visual Studio 2010, C# language
I need two examples:
1- Depending on an element inside the parent element.
2- depending on an attribute of the parent element, make sure that attribute is not an integer value, it's code.
Notice: I have searched for many websites and view multiple solutions nobody mention about using control value in XPath expressions.

Use xml linq which is better in this case than xpath
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
List<XElement> mobiles = doc.Descendants("Mobile").ToList();
mobiles = mobiles.Where(x => (string)x.Element("FullName") != "Galaxy S-4").ToList();
mobiles = mobiles.Where(x => (string)x.Attribute("RegDate") != "26/05/2017").ToList();
doc.Descendants("Mobiles").FirstOrDefault().ReplaceWith(new XElement("Mobiles", mobiles));
}
}
}

thanks, Mr.jdweng
I solve the problem with this code
XDocument doc = XDocument.Load(#"Mobiles.xml");
List<XElement> mobiles = doc.Descendants("Mobile").ToList();
//mobiles = mobiles.Where(x => (string)x.Element("ID") == ID).ToList();
mobiles = mobiles.Where(x => (string)x.Attribute("ID") == ID).ToList();
doc.Descendants("Mobile").FirstOrDefault().ReplaceWith();
Best regards

Related

How to change XML element value

I need your help to finish my task also gain some knowledge from it.
I am having XMl like below
<?xml version="1.0" encoding="UTF-8"?>
<spml:batchRequest xmlns:subscriber="urn:abc:names:prov:gw:SUBSCRIBER:3:0" xmlns:spml="urn:abc:names:prov:gw:SPML:2:0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" execution="synchronous" timestamp="true" processing="sequential" onError="exit_commit">
<version>SUBSCRIBER_v30</version>
<request xsi:type="spml:ModifyRequest" returnResultingObject="full">
<version>SUBSCRIBER_v30</version>
<objectclass>Subscriber</objectclass>
<identifier>1234567890</identifier>
<modification name="udm5gData/servingPlmnId[#plmnId='20201']/provisionedData/sessionManagementSubscriptionData[#singleNssai='1-000002']/dnnConfiguration[#dnnId='dj.nmdd']" operation="remove" scope="uniqueTypeMapping" xmlns:subscriber="urn:abc:names:prov:gw:SUBSCRIBER:3:0">
</modification>
</request>
</spml:batchRequest>
Out of this I need to modify the #singleNssai='1-000002' from modification tag Could anyone help me to change.
Something like #singleNssai='2-000001'
I am trying like below
XmlDataDocument doc = new XmlDataDocument();
doc.Load("D:\\soaptemp\\test.xml");
XmlNode singlenssais =
doc.SelectSingleNode("//modification/name/#singleNssai");
if (singlenssais != null)
{
singlenssais.Value = "2-000001"; // Set to new value.
}
Using Xml Linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication40
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement modification = doc.Descendants("modification").First();
XAttribute name = modification.Attribute("name");
string strName = (string)name;
strName = strName.Replace("1-000002", "2-000001");
name.SetValue(strName);
}
}
}

XPath query with multiple namespaces

What do you think the correct XPath is to pull the dublin core identifier below?
I added a namespace manager with these entries:
// Add the namespace.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(m_xml.NameTable);
nsmgr.AddNamespace("mets", "http://www.loc.gov/METS/");
nsmgr.AddNamespace("dc", "http://purl.org/dc/elements/1.1/");
nsmgr.AddNamespace("dcterms", "http://purl.org/dc/terms/");
And I have tried 15 or so different XPath iterations including the ones below. When I do not get an error, the result is null.
//xml_uuid = m_xml.SelectSingleNode("/mets:mets/mets:dmdSec/mets:mdWrap/mets:xmlData/dcterms:dublincore/dc:identifier").Value;
xml_uuid = m_xml.SelectSingleNode("//dc:identifier",nsmgr).Value;
Here is the xml I am working with:
<mets:mets xmlns:mets="http://www.loc.gov/METS/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/METS/ http://www.loc.gov/standards/mets/version18/mets.xsd">
<mets:metsHdr CREATEDATE="2017-03-08T20:13:27" />
<mets:dmdSec ID="dmdSec_1">
<mets:mdWrap MDTYPE="DC">
<mets:xmlData>
<dcterms:dublincore xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xsi:schemaLocation="http://purl.org/dc/terms/ http://dublincore.org/schemas/xmls/qdc/2008/02/11/dcterms.xsd">
<dc:identifier>F2015.5</dc:identifier>
</dcterms:dublincore>
</mets:xmlData>
</mets:mdWrap>
</mets:dmdSec>
etc...
I am trying to assign the dc:identifier - F2015.5 in this case - to a string.
With xml linq and ignoring the namespaces :
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication131
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
string results = (string)doc.Descendants().Where(x => x.Name.LocalName == "identifier").FirstOrDefault();
}
}
}
Here is one working answer. I believe the main thing is to use .InnerText and not .Value.
xml_uuid = m_xml.SelectSingleNode("//mets:xmlData[1]/dcterms:dublincore[1]/dc:identifier[1]", nsmgr).InnerText;

Delete node with C# in XML

I'm Trying to Delete a node from XML with C#, but for some reason I can't.
What I doing wrong?
The code runs well, respond with true, but the XML don't change and the node is not eliminated.
This is my code to Delete:
internal static bool DeleteCamera(string name)
{
XmlDocument xml = new XmlDocument();
xml.Load("xmlpath.xml");
XmlNode toDelete = xml.SelectSingleNode("//Camera[#Name='" + name + "']");
if (toDelete == null)
{
return false;
}
else
{
toDelete.ParentNode.RemoveChild(toDelete);
xml.Save("xmlpath.xml");
return true;
}
}
This is my XML result with WCF service:
<Cameras>
<Camera Name="Camara1" Url="Camara1" Width="600" Height="800" />
<Camera Name="Camara2" Url="Camara2" Width="600" Height="800" />
</Cameras>
Thank you guys, the problem was the containing apostrophe (?) before and after name string.
XmlNode toDelete = xml.SelectSingleNode("//Camera[#Name='" +name+ "']");
But I don't know why I need to restart the service to see the changes if I have a Method to load the xml file.
Use xml linq. The name in xml is "Camara1" not "Camera1".
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
string removeName = "Camara1";
XElement camera = doc.Descendants().Where(x => (x.Name.LocalName == "Camera") && ((string)x.Attribute("Name") == removeName)).FirstOrDefault();
camera.Remove();
}
}
}

Using c# to read XML that has nested namespaces

I am trying to extract the following values from this XML using C#.
Messages - the inntertext
success="true" - just the "true" bit
status="Released" - just the "Released" bit
Namespaces are clearly the issue here - but I can't get it right.
Can someone provide an example of parsing this file here please?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<tns:executeCreateLoanIncreaseResponse xmlns:tns="http://api.ws.liq.pisys.com/">
<CreateLoanIncreaseResponse success="true">
<OutstandingTransactionAsReturnValue version="1.0" alias="LIBRLC" status="Released" id="5CJB6GS"></OutstandingTransactionAsReturnValue>
<Messages>
<Message>CreateLoanIncrease>>Effective date current business date (08-Sep-2016).</Message>
<Message>CreateLoanIncrease>>Intent Notices have not been generated.</Message>
<Message>CreateLoanIncrease>>You are about to release this increase.</Message>
</Messages>
</CreateLoanIncreaseResponse>
</tns:executeCreateLoanIncreaseResponse>
</soapenv:Body>
</soapenv:Envelope>
Try xml linq :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement messages = doc.Descendants().Where(x => x.Name.LocalName == "Messages").FirstOrDefault();
XNamespace ns = messages.GetDefaultNamespace();
List<string> strMessages = messages.Elements(ns + "Message").Select(x => (string)x).ToList();
}
}
}
You can use Linq2Xml and XPath
var xDoc = XDocument.Load(filename);
var success = (bool)xDoc.XPathSelectElement("//CreateLoanIncreaseResponse").Attribute("success");
var status = (string)xDoc.XPathSelectElement("//OutstandingTransactionAsReturnValue").Attribute("status");
var messages = xDoc.XPathSelectElements("//Message").Select(x => (string)x.Value).ToList();

C# & LINQ - Get names of parent elements in xml query

I have an XML file with IP addresses and their assigned locations/floors that looks like this:
<Locations>
<LOCATION1>
<FLOOR1>
<SECTION1>
<IP>10.10.10.10</IP>
<IP>etc....
</SECTION1>
</FLOOR1>
</LOCATION1>
.....
What I am attempting to do is get query for an IP address and return the names of the parent elements. I am able to query for that IP but I have not had any luck figuring out how to get the parent elements names (i.e. SECTION1, FLOOR1, LOCATION1). Here is the code I am using for querying xml to find the IP, I just have it returning the value at the moment to verify my query was successful:
var query = from t in xmlLocation.Descendants("IP")
where t.Value.Equals(sIP)
select t.Value;
Try this :
XML
<?xml version="1.0" encoding="utf-8" ?>
<Locations>
<LOCATION1>
<FLOOR1>
<SECTION1>
<IP>10.10.10.10</IP>
<IP>20.20.20.20</IP>
</SECTION1>
</FLOOR1>
<FLOOR2>
<SECTION1>
<IP>30.30.30.30</IP>
<IP>40.40.40.40</IP>
</SECTION1>
</FLOOR2>
</LOCATION1>
</Locations >
​
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("LOCATION1").Elements().Select(x => new
{
parent = x.Name.ToString(),
ip = x.Descendants("IP").Select(y => (string)y).ToList()
}).ToList();
}
}
}
​
The code below gets location, floor, and section
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = #"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants("Locations").Elements().Select(x => x.Elements().Select(y => y.Elements().Select(z => new {
location = x.Name.ToString(),
floor = y.Name.ToString(),
section = z.Name.ToString(),
ip = z.Descendants("IP").Select(i => (string)i).ToList()
})).SelectMany(a => a)).SelectMany(b => b).ToList();
}
}
}
​
var xDoc = XDocument.Load(filename);
var ip = xDoc.XPathSelectElement("//IP['10.10.10.10']");
var names = ip.Ancestors().Select(a => a.Name.LocalName).ToList();
names will contain SECTION1, FLOOR1, LOCATION1, Locations
If you know those name beforehand you can also use them to select the correct node
var ip = xDoc.XPathSelectElement("//LOCATION1/FLOOR1/SECTION1/IP['10.10.10.10']");
or
var section = xDoc.XPathSelectElement("//LOCATION1/FLOOR1/SECTION1[IP['10.10.10.10']]");

Categories

Resources