C# 将XML值提取到字符串c中#
我有一个字符串,它的XML标记如下C# 将XML值提取到字符串c中#,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我有一个字符串,它的XML标记如下 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <lab:lab xmlns:udf="http://ghjhjhj.com/ri/userdefined" xmlns:ri="http://kjkj.com/ri" xmlns:lab="http://iuiuu.com/ri/lab" uri="https://h
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<lab:lab xmlns:udf="http://ghjhjhj.com/ri/userdefined"
xmlns:ri="http://kjkj.com/ri"
xmlns:lab="http://iuiuu.com/ri/lab"
uri="https://hhjjhjhj.org/api/v2/labs/1">
<name>Administrative Lab</name>
<billing-address>
<street></street>
<city></city>
<state></state>
<country></country>
<postalCode></postalCode>
<institution></institution>
<department></department>
</billing-address>
<shipping-address>
<street></street>
<city></city>
<state></state>
<country></country>
<postalCode></postalCode>
<institution></institution>
<department></department>
</shipping-address>
<udf:field type="String" name="Account ID">adm</udf:field>
<website></website>
</lab:lab>"
但将来可能会有额外的自定义项字段,所以我要检查的内容应该是name=“Account ID”,我不确定如何进行检查
如何检索该属性?您可以使用
属性
方法检索元素
的属性值
var udf = "http://ghjhjhj.com/ri/userdefined";
var new_doc = XDocument.Parse(new_responseString);
var fieldValues = doc.Descendants(udf + "field")
.Where(field => field.Attribute("name").Value.Equals("Account ID"))
.Select(field => field.Value);
foreach (var value in fieldValues)
{
Console.WriteLine(value);
}
如果只需要一个值,则使用FirstOrDefault
方法
var fieldValue =
doc.Descendants(udf + "field")
.FirstOrDefault(field => field.Attribute("name").Value.Equals("Account ID"))
.Value;
但请注意-此查询将引发异常,因为没有属性为
name=“Account ID”
的元素。您可以使用属性
方法来检索元素的属性值
var udf = "http://ghjhjhj.com/ri/userdefined";
var new_doc = XDocument.Parse(new_responseString);
var fieldValues = doc.Descendants(udf + "field")
.Where(field => field.Attribute("name").Value.Equals("Account ID"))
.Select(field => field.Value);
foreach (var value in fieldValues)
{
Console.WriteLine(value);
}
如果只需要一个值,则使用FirstOrDefault
方法
var fieldValue =
doc.Descendants(udf + "field")
.FirstOrDefault(field => field.Attribute("name").Value.Equals("Account ID"))
.Value;
但是请注意-此查询将抛出一个异常,即没有属性为name=“Account ID”
的元素,这可能会对您有所帮助
XNamespace laburi = "http://iuiuu.com/ri/lab";
XNamespace udfuri = "http://ghjhjhj.com/ri/userdefined";
XDocument xdoc = XDocument.Load("some.txt");
var a = xdoc.Elements(laburi + "lab").Elements(udfuri + "field").FirstOrDefault().Value;
也许这会对你有好处
XNamespace laburi = "http://iuiuu.com/ri/lab";
XNamespace udfuri = "http://ghjhjhj.com/ri/userdefined";
XDocument xdoc = XDocument.Load("some.txt");
var a = xdoc.Elements(laburi + "lab").Elements(udfuri + "field").FirstOrDefault().Value;
你能分享你完整的XML或者更大的部分吗?到目前为止你尝试了什么?可能重复。请参考这个。希望这有帮助。@Mohithrivastava我已经编辑了整个字符串。我知道我可以使用XDocument.Parse,但我不确定如何给出标记name@MohitShrivastava请帮我做这个。我已经添加了我已经尝试过的内容,完整的字符串是什么?您可以共享完整的XML或更大的部分吗?到目前为止您尝试过什么?可能重复。请参考这个。希望这有帮助。@Mohithrivastava我已经编辑了整个字符串。我知道我可以使用XDocument.Parse,但我不确定如何给出标记name@MohitShrivastava请帮我做这个。我已经添加了我已经尝试过的,以及什么是完整的感谢法比奥。但是如何将udfValues转换为字符串。@Sid-udfValues
的类型是IEnumerable
。如果只需要一个值,请在选择method-FirstOrDefault()
方法之后添加到查询中。它表示非发票成员'System.Xml.Linq.XElement.value'不能像方法一样使用。
中的第一个值()代码>错误消息显示非常清楚:)。只需删除prentesse->.Value。答案中已修复
很抱歉,我对这一点完全陌生。在调试过程中,我遇到了这样一个问题:在同一行中说{“对象引用未设置为对象的实例。”}
。但是如何将udfValues转换为字符串。@Sid-udfValues
的类型是IEnumerable
。如果只需要一个值,请在选择method-FirstOrDefault()
方法之后添加到查询中。它表示非发票成员'System.Xml.Linq.XElement.value'不能像方法一样使用。
中的第一个值()代码>错误消息显示非常清楚:)。只需删除prentesse->.Value。答案中已修复
很抱歉,我对这一点完全陌生。在调试过程中,我遇到了一个问题,就是在同一行中说{“对象引用未设置为对象的实例。”}