- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 LinqToXml 获取名称为 GUID
的注释值.所以 XML 看起来像这样:
<xml>
<node1>
<GUID>123948390</GUID>
</node1>
<xml>
也可以嵌套到更多的节点中。每个可能的 XML 字符串只有一个 GUID。
我想做的是解析 XML 以收集 GUID 元素。我正在解析的 XML 可能包含也可能不包含 GUID 元素。如果它不包含 GUID 元素,我希望它返回一个空字符串。
我尝试的是:
doc.Elements().Where(e => e.Name.LocalName == "GUID").Single().Value;
其中 doc 是 XDocument
,但这并没有找到值,如果没有找到则抛出异常。如何获取 GUID 元素的值并确保在未找到任何内容时不抛出异常?
/编辑
var doc = XDocument.Parse(xmlString);
this.RequestId = (string)doc.Descendants("GUID").SingleOrDefault() ??
String.Empty;
总是返回一个空字符串。即使有 GUID。
xmlString 如下所示:<?xml version=\"1.0\" encoding=\"utf-8\"?><MethodName xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\><GUID>blabla</GUID></MethodName>
.
最佳答案
如果您想搜索所有文档,您应该使用Descendants
。如果文档中没有这样的元素,您可以将元素转换为字符串以获取其值而不会出现 NullReferenceException:
var guid = (string)doc.Descendants("GUID").SingleOrDefault() ?? String.Empty;
或者
var guid = doc.Descendants("GUID")
.Select(g => (string)g)
.SingleOrDefault(String.Empty);
或者用 XPath
var guid = (string)doc.XPathSelectElement("//GUID") ?? String.Empty;
注意:如果您在真实的 xml 文档中定义了默认的 xml 命名空间,那么您应该提供命名空间以获取元素名称:
var ns = doc.Root.GetDefaultNamespace();
var guid = (string)doc.Descendants(ns + "GUID").SingleOrDefault() ?? "";
关于c# - 如何使用命名空间获取 XML 中节点的值,如果找不到节点则不抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042640/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!