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();
Related
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);
}
}
}
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;
I'm writing a small web server (HttpListener) which will ultimately run as part of a Windows service and response to SOAP requests from another application.
I've written the code to decode the SOAP request XML and extract the action, process it and get the result, but can't quite get the response XML to be generated correctly.
I've like to avoid generating each element individually since the Types of the response may vary and I don't want to have to code every variant into the web server and would prefer not to have to delve into Reflection and walk the Type structure to output the values. I'd prefer to use something simple like the XmlSerializer Serialize method (which presumably is walking the Type structure), but it's not clear if it has enough control.
The output I'm trying to produce in my test program is:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetUsernamesResponse xmlns="http://tempuri.org/">
<GetUsernamesResult xmlns:a="http://schemas.datacontract.org/2004/07/ConsoleApp2"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:Results xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<b:string>Kermit.The.Frog</b:string>
<b:string>Miss.Piggy</b:string>
</a:Results>
</GetUsernamesResult>
</GetUsernamesResponse>
</s:Body>
</s:Envelope>
The output I'm getting is:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetUsernamesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://tempuri.org/">
<GetUsernamesResult xmlns:a="http://schemas.datacontract.org/2004/07/ConsoleApp2"
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns="">
<Results>
<string>Kermit.The.Frog</string>
<string>Miss.Piggy</string>
</Results>
</GetUsernamesResult>
</GetUsernamesResponse>
</s:Body>
</s:Envelope>
This is the current test program:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
namespace ConsoleApp2
{
public class GetUsernamesResponse
{
public List<string> Results { get; set; }
}
public class GetUsernamesResult : GetUsernamesResponse {}
public class Program
{
private const string ns_t = "http://tempuri.org/";
private const string ns_s = "http://schemas.xmlsoap.org/soap/envelope/";
private const string ns_i = "http://www.w3.org/2001/XMLSchema-instance";
private const string ns_a = "http://schemas.datacontract.org/2004/07/ConsoleApp2";
private const string ns_b = "http://schemas.microsoft.com/2003/10/Serialization/Arrays";
private static void Main(string[] args)
{
var r = new GetUsernamesResult()
{
Results = new List<string>
{
"Kermit.The.Frog",
"Miss.Piggy"
}
};
var ns = new XmlSerializerNamespaces();
ns.Add("i", ns_i);
ns.Add("a", ns_a);
ns.Add("b", ns_b);
var oSerializer = new XmlSerializer(typeof(GetUsernamesResult));
using (var sw = new StringWriter())
{
var xw = XmlWriter.Create(
sw,
new XmlWriterSettings()
{
OmitXmlDeclaration = true,
Indent = true,
ConformanceLevel = ConformanceLevel.Fragment,
NamespaceHandling = NamespaceHandling.OmitDuplicates,
});
xw.WriteStartElement("s", "Envelope", ns_s);
xw.WriteStartElement("s", "Body", ns_s);
xw.WriteStartElement($"GetUsernamesResponse", ns_t);
xw.WriteAttributeString("xmlns", "i", null, ns_i);
oSerializer.Serialize(xw, r, ns);
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteEndElement();
xw.Close();
Console.WriteLine(sw);
}
Console.ReadKey();
}
}
}
Can this be done with Serialize or do have to do it with Reflection and, effectively, reproduce what the SOAP responder in IIS is already doing?
FYI, I also tried setting up a Type mapping...
var mapping = new SoapReflectionImporter().ImportTypeMapping(typeof(BarcodeProductionGetUsernamesResult));
var oSerializer = new XmlSerializer(mapping);
... but the resultant XML was totally different and, although it didn't produce an error, also didn't decode in the calling application; a null value was returned
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetUsernamesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
<GetUsernamesResult xmlns:a="http://schemas.datacontract.org/2004/07/ConsoleApp2" xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays" id="id1" xmlns="">
<Results href="#id2" />
</GetUsernamesResult>
<q1:Array id="id2" xmlns:q2="http://www.w3.org/2001/XMLSchema" q1:arrayType="q2:string[2]" xmlns:q1="http://schemas.xmlsoap.org/soap/encoding/">
<Item xmlns="">Kermit.The.Frog</Item>
<Item xmlns="">Miss.Piggy</Item>
</q1:Array>
</GetUsernamesResponse>
</s:Body>
</s:Envelope>
I like to use xml linq. For complicated headers a namespaces I just parse a string to get desired results. See code below :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
XDocument doc = MySerializer<MyClass>.GetXElement(myClass);
}
}
public class MySerializer<T> where T : new()
{
static string xml =
"<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <s:Body>" +
" <GetUsernamesResponse xmlns=\"http://tempuri.org/\">" +
" <GetUsernamesResult xmlns:a=\"http://schemas.datacontract.org/2004/07/ConsoleApp2\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
" <a:Results xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" +
" </a:Results>" +
" </GetUsernamesResult>" +
" </GetUsernamesResponse>" +
" </s:Body>" +
"</s:Envelope>";
public static XDocument GetXElement(T myClass)
{
XDocument doc = XDocument.Parse(xml);
XElement results = doc.Descendants().Where(x => x.Name.LocalName == "Results").FirstOrDefault();
XNamespace ns_b = results.GetNamespaceOfPrefix("b");
StringWriter sWriter = new StringWriter();
XmlWriter xWriter = XmlWriter.Create(sWriter);
XmlSerializerNamespaces ns1 = new XmlSerializerNamespaces();
ns1.Add("b", ns_b.NamespaceName);
XmlSerializer serializer = new XmlSerializer(typeof(T), ns_b.NamespaceName);
serializer.Serialize(xWriter, myClass, ns1);
results.Add(XElement.Parse(sWriter.ToString()));
return doc;
}
}
public class MyClass
{
public string test { get; set; }
}
}
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>/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADCAQQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooASio5JVhjZ3dVVV3MzHAAHUk1y+oeMNg/4l9urJ/DNMSFPuqjlh9dvtmmlcLnW0V5Xe+O9aT7lxAv/AFzhA/8AQi1Ydz8SdfT7l8v/AH5j/wDiar2UiedHuFFfPWn/ABQ8V6vtS2u0jlbO1Zlij6epbCj8+vFaB8W/ED+C+0//AMCLb/4qlyMdz3WivCT4p+JX/P1p3/gRbf8AxVc7f/F3xtpt89lcXdr5q/e2xo46A9VODwR0NP2bC59L0tfL8Xxz8Y+Xu86z/wCBWo/oa0rP45+KfvzQ6ZKq/KzfZ3HJzgEhuOh/I0ezYuZH0bS15P4a+NFlqE62+t2i2O75Vuo2LRZ/2gRlR7/MB3Ir1VW3AMp+Wpaa3GncfRRWF4k8WaL4TsPtmsXq26M2I05Z5T6Ko5P8h3xSGbtFeLT/ABy1G/fHhzwfeXkP/PaZjn8VjVgP++qr/wDCy/idLIzJ4Wso0z8qtY3DMPx3jP5CnZge40V4cPiD8T3/AOYNYp/3D5v6yU7/AIT34m/9Ay0/8Fsn/wAdo5WB7fRXh3/CwPiV/wBAyz/8Fsn/AMdp3/Cw/iP/ANAyx/8ABbN/SWjlYHt9FeGf8LN+IkLrv0bT5V7r9huFJHpnecfXBq9qHxc8SJtax8KSt8x3LNHINo9AR1P4Dp74BysD2WivF7L47tbTrF4j8NXNivTzoZN/1O1gpx9CTXqei67pfiLT01DSb2K7tX6PH2PowPKnkcEA0WA1aKKKQBRRRQAUUUUAFFFFABRRRQBy/jCf9xa2f8ErGSVfVVxgH23FfyrgNTvvv/PXVeP53hf5H2t9jk2tx8pyOeeO1Yd34asnkbfd33/fUf8A8RXVQjdaHPVkk9Thr29/2/8AP5VhXFxXoFx4R0r/AJ+L7/v4n/xNZsvg7SP+et5/3+X/AOJrqWHm+hzPEwXU5LTbbSr+O4/tDUPszrJAse6RFDI0m2Q4KksVXkAYA6njq+fR/DCQK66yzO0yrt3Rj92ZgueV+8I8sc4GeeBkVuyeDtI/v3n/AH+H/wATVV/CWlf37z/v8P8A4mn9TqsX12kjAbR/D3mfPqf/AC0kT5ZEPAlKqc7RwV2tnAzyR0rnr2C3hjt/s77t0IaT5gdrEDIwAMYORjk8Z7127+FdK/v3P/f4f/E1C3hTSP8Ap5/7/D/4mqWBrCeYUTzxxTRK6Js3ts+8y9sjvivQT4R0b/p5/wC/3/1q0J/h94ehgsn+0Tfv4d7fvQNh4+XOf9rvjp+U1MPUhKMZbvb5DjjaL2Z51Z3jpJX1B8IdXfUvBMMUrbmtGMIP+yCdo/AV49N4G8PRWlxKtxJviVyq+f8AexjB/HJOPbr6d5+zzO0vhvVg/wDBdL+qA1y4im4LU6qNaNT4T2RjxXzTb3afEHxzd63qb7tPiy0Ub9FhBwiY7ZHzN6nNfQ2uS+T4f1KX+5ayt+SE18ueH5XtvD935Xy/6PH/ADI/rXPA2kd9qXxESz/0LSbeJYovlX5QBx6Csc/ETV/78X/fsVw/nUeb/n8K15UTc7b/AIWBq/8Afi/75Fb2geJdQv8AbLdzM27d5VvbKvmOFGWYlsKqjgFmIGSBnkZ8r86tNNXl074f394n/Hw9/HYK3PyoInlHf+82fwX0qZaDR7DJ4m0pJPs+xvN/hVdQg3sfQBmC5/GuZ13xTqWmyb7S482LdsZZIwskTcHaw+hyCOCCCMggnxq60e6fRv7UuJZG/drL5jfcbc2Aqnuw5yO2K6F7yV/CugXDtue5WaGRmzkiF12Hr1xIwz3wPSoW5TOtHj/Vf+mX/fIqRfiLqSfwRN/wEVwnm0ebWvKiLnq1n4u03xJA+m6tYxfvV/iXIb6ehrA8F6hL4K+J8WnxS/8AEvvphbTL2feP3Tf7wZlGfQt61xsNw6To6P8AOrVp3szf8Jfpsu/5lu7Nv/H1NJxHc+rqKKKwLCiiigAooooAKKKKACiiigDzX4lz7J1i/wCnU/qW/wDiTUVxP+8eofikf+JinvaqP/HpKCm+SX59u1S/5cD9SB+NepgkuVtnl4+VmkitLLVKV60orV5vm+zyMqxtK21vvYB2jgcAsMc++OlZ81u3zSqjeUrHbuYZxnGcd+SASBjJr0oTjex5M3JK5RlaqcrVomxnfZtT72WX5lHABJJyRgYVuTgcHnimnR79vu2sjdV+XkcdeR2756YBPY10qdNbyX3nJJ1HtF/cYkhqE761xpV08creT8sTMrfMByoywwTyQOcCk/sq6adYFt2adv8AlmuCfoQDwfY81uqtL+ZfeczdR/Zf3GPh6XD1srpM/wA8X2WTz/MRF+YAZflRjvkdMH60Lod++7yrR5FXHzRsGHIyCCCQRjuD7dan21LuvvDkq9Iv7jDmZ/Il/wCuZ/ka679nH/kXNa/6/F/9AFc1PD+4l/65n+Rrpf2cv+Rc1v8A6/F/9AFePnO8T6DIpc0Z/I9W8S/8iprH/XlN/wCgGvl7Rf8AkW9Q/wCveL/0KvqHxL/yK2r/APXlN/6A1fLujn/im9S/69Y/4v8AbrxoHuSMXzKPMqvu/wA7qN3+d1bkljzKsWOpWS297ouseYul3zJL9ohXc1tOmQrgHqCCVYdSMY5FZ+7/ADupsp/dv8m75flXdUyV0Cdi1Lonh3hU8ZrLAvzbfsMqkeuFYgE/Q1LqGp29++n2un27QaVpsJig8z70rMcvI2B1Y447ACvVdT8E+D7fwPqV/aQwNcQ2G+CTzPm8wR5DZ6k57ZOc9DXju7/O6ogr6lNljzKN1V93+d1G7/O6tSS1G/7xP96tnUZkh123uH+5FJau3rgbWOPwFc9Gf3if/FVp66f38v8Auxfxf7IpMD7EooormNAooooAKKKKACiiigAooooA8m+LB/4mVv8A9cY//QpKmDtDJL8ituXDbs9NwPYjuoqr8XT/AMTGyH95Y/8A0KStKGFZb1Ym3bWkC/KwHU4zyDXp4Jr2crnh5q2pwUd3cpFz5LKy/N5XlIyqB1kEhz6dxx7cVFLLK0CwNt2xrheo/iJ5Gduck84z78nNy3RZk3yqypt3NL5gAQ4yoxt5JPGMg02G2R5F3v8AuuN7Kpzz2GepP5dT0BrvUqSvfpqeLOVeVrPfQzzK/wDzwhb92Im3b/nUKFGcHjgD7u3nrmk+0XHz/wCq+Zi7fL67eMdMAIBj0JFan2SPe0W0SSeYUSMzrGWHQEAgkkn0xUa21VB0ZX0OarPEwSd9+xSnkaaBE+VX/e7tq9N+AwXOcAgDPc85Jyckk1xLJ5vlQKyyO67Vb5S+cnlj3JPrnHYADRFrS/ZKpKkuhPt8Q+vYykkuIduyKD5di/dPOxCi7sHJ+Vj0x0GMVGJLhH3IsfyshVdpwuxSFXrnGGbvnPOc1sG0qNraqSpPoL2uIX2jmLu2/cXDbFX92zfKuB0PQdhVv9nNsaJqqetzn8kT/Gr97bf6Dcf9cW/9BNZ/7Of/ACBtT/6+D/6BHXn5pK/Ke/w8moVL91+p6v4tlaHwdrUq9VsZj/44a+W9MbZ4f1D/AK94/wD0Ovp7xx/yIWv/APYPn/8AQDXy/p//ACAr3/r3j/8AQ68uB9BIw80uajorcgkz/vUbqn0/TrrVZ3gtFRmSMytukVAFHUksQAOnf36AkWYfDutXMEVxFZStFLbtdRt5ifNEpUFsbs9XX5cbjuGAaV0gs2UTNL5ezfLsX+Hccfl0puavXGharbRyyy2+1YpGRm+0RHlE3sBhvmAUg5XIwRzyKVvD2rrJseybf5nk/wCsj+8JBHt+9x87BfTqegJC5kFmUM0bv96iWGWGR4pfvL/dkVhzz1UkH8DUdMCaM/vE/wB6tHxEf+Pr/rnH/wCgCsuL/Xp/vVpeIut5/wBc4/8A0AUmNH2VRRRXMahRRRQAUUUUAFFFFABRRRQB5F8Y/kutKYfeaRV/DLf4mtVPlnVlbaytlW44OevNZHxoP+laJ/13T+bVPLrlqk7rsZvmPzdEY/Xk498V6eCTdOVjwM3TdWnb+tiV9Qsra4WyluIF2qWXcvC9A3zYxnGOOvFWo2ZdjxXTL8oZfLkKg+mccH8a81ubGX+0riCZdl0zF9vXfn5htPfIOR65/Cuq0TWrfTfBK3Vxul8qZ4VjXq2BuAz2GCefpXNDHwd7vRb6bH0uZ8JRo4WnVwc3ObaVu9+qOlXzN+7zd0md+5sFsnnPPv65Ax0p6Q1y+meObe8n/wBLt1tot2GbzN2z3JIGR+Vdjay29zu+zyxS7fvbWzt+orpoYqlVTdN3PlcxybG4CcYYqNr7ap37jUgqUW9XEhqdYK0lVMYYUyzbVE9rW8ttSPZVKxBo8DdHI6hb7LG4/wCuLf8AoJrA/Zy/5FzVf+vz/wBkSu31a12abd/9cZP/AEE1w/7OX/It6r/19/8AsiVz4upzWPQyql7JTXoereJokm8K6xHKiujWUwZW5BGw9RXyjph/4kV7/wBesf8AD/tV9Y+If+Ra1X/rzm/9ANfJmmf8gK6/69V/9CrmgenIxc/520f5+7R8/wDlqK3Mizp2oXGlX0V7aeUtxE26NmhV9p6ggMDgjHUc/rV628T6xZ+V9nu9qRxhI/3KnCgRDbyOn+jxZ9cH+82ciik0mVdmqPEepeRLFvg2SyCWbdaoS5CFMMccrtJGPc+ppv8AwkOq7932tv8AXCf5owdziQyAnI5+ZmOOhzzwBjLpaOVdhczJ7y8lv7t7q42tK2N37vA4AAAA6AAAfhUGf87aP8/eopiuPi/1if7392t28RZtdSKVFaKWa3Rl2/eB2gj8jWFD/r1/3q3rn/kYF/6+Lf8AmtSxo+v6KKK5jcKKKKACiiigAooooAKKKKAPGvjcB5+h7vufaFDfT5uaoanA9nJsf+L5o27OD3B71c+Ov39D/wCvhf8A2atbwpPLc2V1C/zRRyYXdyMnkjn8KipnUcss6kbxd723MsRk7x1CVWMrSi1vs0yppWmWt/YWt/fOu5V2RSMwHAZivXvz+lV/HP8AZum+G0t/s6xXE9wZYVhUKGO3DM2PYj8dvasLxXZ29zq1xcXdwqyxMUjhboiDhQoH3RjB985rmbqzuHS1ihu45IvM2RQ+YSELHsP4QTjP59qwqZNiJSljadTmU7tq2lnqreaLyfOqcMXSoV21GDte73X6EFrbS390lrEyq0rbdzenc++K7Gw8Q3v/AAkH/Evii2wM0S+Zk7+x3YPTI/QVxkMdxZztK/yyxZZVVsnI78dh1/Cren372epRXFvKzPu/eeZ/Hk/MD9ayp4qeCw04Rh78tm9j7HNcujneIhiKdRShTTsv73n8j6AsbpLmOJ3h8rzVH8WeT2/OtZIKwIJoHnS33qpXDeWrbpCo9EGWx74wM10KLJMf3qmNP+ee7k/Ujj8B+Z6DHJ8XjK1KTxSs76d7HxlTDQhL3Ryj+4m7/a7fn/hmsW71mTTp7zzYPNig2FtrD5A+cHJ7DFdGBtrFe2t7vVb+Bx/r4grsvBIAAHPtuOPrXpz5pfC9UaU4wXxLQNXiV9JunT7n2eRlb/gJrzD9nP8A5FvU/wDr8P8A6Ljr0aOTGh6lZMPntInT14KEgZ/P9K84/Zy/5FvUv+vw/wDouOtG21qRGCi3Y9c17/kXtS/69Jf/AEA18kaYf+JFdf8AXqv/AKFX1xrn/IA1L/r1l/8AQDXyNpp/4k1x/wBeq/8AoVVAJGNRS5/zzRn/ADzW5iJR8lLn/PNGaAEopc/55oz/AJ5oASilz/nmjP8AnmgB0P8Ar1/3q3Lk/wDE9/7eIP5rWLCf36f73vW1cH/ic/8AbxB/NaljR9h0UUVzHQFFFFABRRRQAUUUUAFFFFAHi3x0ZUuvDu/7n2xN30+bP6V0UV3af6ix8qBWY+Wq9H98Y4Pt1rmfjyfm0LP/AD9J/wCz1Y8LSNeatcJF92OPezdQpJIH4nn8qqrllHG0H7WN+XY3w+JVGTcnp+Bq6p4b0vWIN+o2itdqu1JVkZGxzgEgjI5PBzjNee+IdHi0qC3/ALPsZYk87dIzKx6dAWbOQTnjPau21fxjB4b1J7dLf7der/rGZtkcQIyAOCSxGM/Xr1FQW/iey8WfaE1O3W2VY8bd24MDnocA5zyPTGfp42Hvl1X2sqjdOLvyXbXbQ3x2WYqph3XoUrxl10vr1XU5LUruS5tIldIjsZX8vaCDtIJBz2459s1oWfgu/wDs6XH2Rfuh9vA3A8lRySD2rd0nw7BqU8tlaS22xo/3k3z7ih4OAR15HGcV6CulvsWLzVVdu33A9h6+/wD+quriSvWx3sp4BKUevl6nzmT08Vg5ThUcqdnttf18jgtOvrSOBIlRYlX7vl8Yx6Y6V6N4du3vtDguHO5juXd64YjP6VWn8KaJeT+fLp67/wCLYzKGx6gEA/jW1DDFbQJFCixxIoVVUYAA6AAdBXLl+X1cLUlKUrp9D6XGYyjiILki0+tzI8WteL4cvTZQySTCFiBG2DwCcDkc1wnhjVb1PDdvs2xXUTGJmXc4XDkdB8xyFzz689DXrBHHNcl4l0q1sbF7y0t4otp/f7WMa7T3YLyeccDrn2r1qMF7a8tnoebWqyVFqO61M7T5rr/iaNcSyqlzBMdrQ4BfBPBPIGCcLz9egrkv2c/+Ra1L/r7P/oEdXrqR4bG4uPs/zeTJtZbcRlcqf4pWyv1xVL9nT/kW9S/6/G/9AjrsxdNQlddTgy6vKrB826Z67rP/ACA7/wD69pf/AEE18g6cf+JNL/17L/6FX2Bq/wDyBr7/AK95P/QTXx/Yf8gd/wDr2X/0IVhTO6Zl/PRl6XFGK3MRM0ZpcUYoATNGXoxS4oAT56MvS4oxQA+H/Xr/AL1bFz/yGX/6+IP/AGWsmAfv0/3q1rgf8TZ/+viH/wBlqWNH2LRRRXMdAUUUUAFFFFABRRRQAUUUUAeK/HWNJZ/DqP8Ade+jRvodwNdxp+jWWjwNa6fbrBFu3N1Jc9NzE5LHAHJPauJ+OX/H94a/6/4f5tXpJv7P++3/AHzTeMpYZJVJJX7s48VTlOyR5b4s8E6zc65cXun263UVy29l8xFKHAyDuIyM9MVSt/D11oUnlajtSWVQ/wArZGB2z3Izz/k16+t9ZP8A8tf/AB009nsLmPZL5Uqfe2yLkfXBFeVi1hMTFqFVJvzR9DhOJMZSpxoVIpxiraaPQ5TwPA7TXV1t22+0RI3985ycfTA/Ou4SoY5bX+GWP0qYT2//AD1WujCzw2Goqmqidut0eXi68sVWdVq1+hMtSqarieL+/TxcRf361eMw/wDOvvM1Fk9Z2t3NrZ6HqFxfStFaxW7tLIvVVCnJHvjp71keIdEk1KyuG0rVZ9Pv2X93JuLR57blPQfTH49K8H1vWfHmiaPeeHPEqXF1ZXClFkusuM7gyskw5JBGQrE8cFQOAqeIhJ2TXydzbkXc2L3xLYW0Dy+bZtbsp/dxqrSuCOhZvm3HueMZ7Vv/ALOpP/CN6kf+ntv/AECKvMvC+lLr3iC3s5U3QpG9xcf7KIpJz7FsL9Wr0v8AZz/5FrUv+vxv/QIq3jOck+eV3+RnyU4/BFL0PYdV/wCQPe/9e7/+gmvjuxP/ABKX/wCvcf8AoQr7E1T/AJBN7/1wf/0E18bWh/4lX3v+Xcf+hVrSJmU8/wCxS5puaT/gdbmI7NGf9ik/4HSf8DoAfn/YpM03/gdL/wADoAdmjP8AsU2loAmhP7xP96tWU/8AE2f/AK+If5rWRF99K1HP/Eyf5/8Al4h/mtJjR9k0UUVynQFFFFABRRRQAUUUUAFFFFAHivx4/wCPjw7/ANf0X82raaeXzH+8vzbvz444x6/lWF8fv+Zf/wCvuP8A9mpxmuIXd33bNobdweh68d+np+vPzufU+f2fzJbsdFG7v/8AFcD/ADx/OpD5v8af8C59vTqK58XUqRxO77kaPcvy9sdPz/yMVJFqq+Y/zrsbHzbvXkdD6D9K+XeHmg5kb6XsUMab32pu27lYnnp17f8A1qkGp26f8tf93r7d/wAqwBqu+R9ny9fl3emCcfhj/PNOa/f+NIu+3/aHBBx3H+fpPsG9yuax0Kaok33Hb/eXPakm1DZA8v2vbtUs3y+gHXNYaTp5f7pPn+92PTvz7Z59/eo5JZZv72z/AGf4fUHr1Hbtjr6ipO++gc/c5DXPEXji51aeXTG1SOyaTbbLBaghlAADY2knPXnPX0rH1O7+JGvabLYXqXtxaNt3LNaxQjghlJIVT1A7130csvkO7orPz97gY7d/b9c1lyTXsP8AGq/w7uM8dcD8+pH9a+ioY1xilCmrrZkSqNkGkR2/hLQpbeG0X7bJbFZ7nvKSCSMnoATwB6DOa0v2df8AkXtS/wCvpv8A0CKsW91u9SC4+dZUaFt21s9iOemfwJxn89r9nT/kX9S/6+j/AOi469bK1UaqTqbtoIu57Fqn/IJvP+uD/wDoJr4xtm/4lS/9ch/6FX2fqP8AyDbr/ri//oJr4ttj/wAS1f8Arj/7NXsUwmQZozSZoFbmVgzS0lOFACf5/wA8UUuKdigQ0U4U/FKBQAsf30q9n/iZP/19Q/zWqkY/eJViM/8AEy/7eof/AEJaTGj7QooorlOgKKKKACiiigAooooAKKKKAPEP2gPuaH/F/pUf/s9Z0es2qQb0Tc65SNlYnkFWx6454PsRWj+0D/q9D/6+l9uz964kTxJI+xPlb7vbbk55GeD0/I15WaUlNRv5mcjq31hJo/N2fK0beXtwCpBHB9BjB/H1zVN5lf8A358t7LkA5GTjOAfxrAF8u99j/OuNvfgtjGO/XNEWofO/zt8qhl2/wjpnBH+7+teQsNbYzudIW2Wj7JWZv7qsfmwBn+Z/P3od2T7Pv3TpOu1mX+HHcAfhyeD7ZyOet9Qi/j+aJvu9iuGB/Hr37AjvVqadfP2/7IePc2dvqMjrnj/9dDo2eoXNWCa48x0+0Nv5bazYPGM5BI9T+vTk03+07h0/euyvx78nGDn14rGmv/3ibE+ZV2/ewOO/HTn+tQT3kr/Om3aqj93t+9x/9aj2Ce6EzYlunT79w0vXcu4454P1qlJffvHRItv+1Ixyv4j6D86yxNFNJ/d3LtbdyV6+vX86d9uXy9ife/utg8n2P4f/AFq1jQSEmS3j/wCiSvvb7rMu3ovynGOuO3HHfiu8/Z3G3QtU/wCvo/8AoEdeWXU7+RLEnyp5f949snjJ759K9Y/Z/TbpOq/9fX/tNK9vARtCXyNaZ65qH/INuv8Ari//AKCa+J4T/oMX/XP+tfbGof8AINuv+uL/APoJr4lgP+ixf9c/616FPcqYY/3qdilFOA/263IGhaULTwKcBQSNC04D/epwFOAoAYFp4WnAU8CkAxR+8p8Hz6l/29Q/+hLTsUyy/wCQsn/X3B/6GKGUj7TooorlNgooooAKKKKACiiigAooooA8O/aFH+iaR/12z+Svn+Yry+W/if5EdflU+nUYOQfz/Ovcfjdor6l4RivYl3tZSbj7A4BP6Y+pFfOD21KeFVdJt7GczcjkVJ9/mrs4/i+7inebv3/Ov3Qv3h2I6H2wawIbGW5kdIk3fkP5kehqKSB4XdHTa649D1GRyDjoaj+zl/N+BnY6hJovL3ptV+P4ge/oacZ9km7zV+b/AGh83PpWBpthFePL51x5FvBD500nllzjeqAKoI3Es68ZHc54q4LHSk+5qd43/cPX/wCP1k8ujfWX4D5Lmrc3EXz/ADr/AN9D+X+elVJL6J03o+3+Jl/u4I/Wn29npv8A0ELn/gViP6SmmvF5L7N6snDK3PQjI4PQ+o9c8nrTjl0f5vwDlKkl1F5n+tX/AGtrf57Gkim3/wAa/wDfX0/z+FaUUPnSbU2/N/tAfqeKHtv79a/UF3JaRmSzfu3b5W+UrtZvUV7n8CYtmk6x/wBfC/qg/wAK8hS3r3z4S6W1h4Ua4ddv2uYuv+6OAf51pGgqMXruawO4uY/NtZov78ZX8xiviG1/1EX/AFzP86+5K+LfE2mP4b8ZalpMqbUtLmRVX/pmx3IfoVZTV09yp7EAWlCc9d3vuA/UkAfiach3/wAf/j1SgVsYkAX94yMqLt/6aI38mNSBf881KB/u/wDAcD+VLtoXmN+QwLTgtPAp4WmIjCU8LTwKcBSAj21U0t1fXbVP+et/AP8Ax8VJqF4ltA6b/wB633V/u+9XPhro0uvfEDRrVVZkiuRdSt6JGQxJ9iQF/EUnsXFH2LRRRXMahRRRQAUUUUAFFFFABRRRQBBc20V5aS29wiywyqUdG6MDwRXhvif4M6lbzvPoTrd2rcrDIwWVPbJ4YfkfaveaSmpNbCaufJtx4G8TWjun9j6hH82N3llQ30PTvWdd+E9ah/1un3LP/s/O/wCS5NfYlFae2YuVHxqmg61D9zSdQXdwy/ZZAGGQ2CNvIyqnB7gelKdMv0+/o8//AIDyj+VfZFGKTq36Bynx4lrqX/QMnX/t3f8ArmrcGlak/wA/9n3zf9u7n+lfW2xf7q06j2r7BynytaaVqTyfurG5V/8AahZD/wCPAVoReG9fvJ9q6PqEjfd3fZ2I/wC+jwPzr6aoo9qxciPF/Dfwpv7idLjXkS0tV5a3Vg0r+xIyqj3BJ+nWvYoYo4YUiiVViRQqqvQAdAKmpKhyb3KSSFrzr4lfDC18cwJeW8q2eswLsjmZfklXqFfHOM9GHIyeD0r0WikM+PtU+G3jjQpmWXQbydS3+sso/PVvf5MkD6gVlnTNdi/4+NP1KD/f09/8K+1aK09oyeVHxOIbr+N51/7cWp6QzvIqLdy7mbaq/YXJY+gAHJr7VpMU/a+QcqPi0W100mxLiRnZtqr9hkzn0A29aPJuPu/a5d33dv2GT/CvtKil7RhynxcIL1/9VLct/u6e9S/2N4im/wBVp+sy/wDXPTXGfxxX2bRR7Rhyo+RNH+FHjPWpF8rRZ7RGPzTaj+5C+5B+b8lNfQnw8+Hdh4E06QJJ9p1K5A+03TLjgdEUdlH5k8nsB21LUuTY0rBRRRUjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==</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
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']]");