obtenir la valeur du nœud de la chaîne xml
J'ai cette chaîne XML
string innerXml = @"<detail><WCFFaultExcepcion xmlns=""http://schemas.datacontract.org/2004/07/CIEL.DigiturnoMega.Entidades"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><ErrorId>b7e9d385-9118-4297-baca-db9ab00f3856</ErrorId><Message>Índice fuera de los límites de la matriz.</Message></WCFFaultExcepcion></detail>";
C'est le stringXML
<detail>
<WCFFaultExcepcion xmlns="http://schemas.datacontract.org/2004/07/CIEL.DigiturnoMega.Entidades" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorId>b7e9d385-9118-4297-baca-db9ab00f3856</ErrorId>
<Message>Índice fuera de los límites de la matriz.</Message>
</WCFFaultExcepcion>
</detail>
Ce que je veux, c'est récupérer la valeur de la détail de la Balise, je suis en train d'essayer avec cet exemple, mais tous les renvoie la valeur null o cero comte, pourriez-vous m'aider?
private static void Example()
{
string innerXml = @"<detail><WCFFaultExcepcion xmlns=""http://schemas.datacontract.org/2004/07/CIEL.DigiturnoMega.Entidades"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><ErrorId>b7e9d385-9118-4297-baca-db9ab00f3856</ErrorId><Message>Índice fuera de los límites de la matriz.</Message></WCFFaultExcepcion></detail>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(innerXml);
XmlNode node = (XmlNode)doc.DocumentElement;
XmlNode optionalNode = node.SelectSingleNode("/detail/WCFFaultExcepcion");
XmlNode optionalNode1 = node.SelectSingleNode("detail/WCFFaultExcepcion");
XmlNode optionalNode2 = node.SelectSingleNode("/detail/WCFFaultExcepcion/ErrorId");
XmlNode optionalNode3 = node.SelectSingleNode("detail/WCFFaultExcepcion/ErrorId");
XmlElement optional = doc.SelectSingleNode(@"/detail/WCFFaultExcepcion/ErrorId") as XmlElement;
XmlElement optiona2 = doc.SelectSingleNode(@"detail/WCFFaultExcepcion/ErrorId") as XmlElement;
XmlNode xNode = doc.DocumentElement.SelectNodes("ErrorId")[0];
XmlNodeList xnList = doc.SelectNodes("/detail/WCFFaultExcepcion");
XmlNodeList xnList1 = doc.SelectNodes("detail/WCFFaultExcepcion");
XmlNodeList xnList2 = doc.SelectNodes("/detail/WCFFaultExcepcion/ErrorId");
XmlNodeList xnList3 = doc.SelectNodes("detail/WCFFaultExcepcion/ErrorId");
}
Je ne comprends pas ce que vous voulez vraiment dans la fin. Pouvez-vous nous donner un exemple... que voulez-vous dire avec
What I want is to get the value of the detail Tag
. Vous attendez-vous à un nœud? Une nodelist? une chaîne de caractères? un tableau de chaînes de caractères? et ce qui devrait être?OriginalL'auteur foluis | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Je pense que cela pourrait être la solution pour vous:
Je voudrais encore vous recommandons de vérifier si le tag existe, essayez de couvrir autant d'erreurs que possible.
Ne pas
ErrorIdTags.Count <= 1
donnertrue
quandErrorIdTags.Count == 1
et il estErrorIdTags[0]
. Il devrait êtreErrorIdTags.Count <1
!OriginalL'auteur Swen Kooij
Essayez d'utiliser Linq to Xml (http://msdn.microsoft.com/en-us/library/bb387098%28v=VS.100%29.aspx) - le code sera vraiment élégant.
OriginalL'auteur aquaraga
Le premier essai
XmlNode node = (XmlNode)doc.DocumentElement;
doit travailler et doit contenir les enfants. EssayezXmlNode firstChildNode = node.FirstChild;
... ainsi, vous obtenez le premier enfant, et de ne pas être vide ou null.Mais lors de l'utilisation de xpath, vous aurez des problèmes à cause de l'espace de noms défini. Vous devrez créer un nouvel espace de noms dans la doc, et attribuer
http://schemas.datacontract.org/2004/07/CIEL.DigiturnoMega.Entidades
une abréviation (par exemple.sh
) ... puis plus tard dans votre xpath, vous pouvez comme allerdoc.SelectSingleNode(@"/detail/sh:WCFFaultExcepcion/sh:ErrorId")
OriginalL'auteur nl-x