Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XML值提取到字符串c中#_C#_Xml_Xml Parsing - Fatal编程技术网

C# 将XML值提取到字符串c中#

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标记如下

<?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。答案中已修复
很抱歉,我对这一点完全陌生。在调试过程中,我遇到了一个问题,就是在同一行中说
{“对象引用未设置为对象的实例。”}