Xdocument 解析文件并读取值



我有下面的示例XML,我需要检索以下两个字段txJu和ddate的值。我也有代码,但它给出了零期望

<Doc id="580171" ddate="2019-06-21" >                       
<ref dtRef="2019-08-21">                    
<dr>                
<cr>            
<pj>        
<pr>    
<dDup txJu="0.00" txFi="0.00" txcOp="0.00" />
<comp txJu="12.96" txFi="2.45" txOp="0.00" />
</pr>   
</pj>       
</cr>           
</dr>               
</ref>                  
</Doc>  


var xdoc = XDocument.Load(file);
string txJu = xdoc.Root.Element("comp").Attribute("txJu").Value;
string ddate = xdoc.Root.Element("Doc").Attribute("ddate").Value;  

你的代码有几个问题。Root元素不包含comp节点,Doc元素是根本身,string ddate = string value = ...无效的 C# 声明。 您可以按以下方式修改代码

var compElement = xdoc.Root?.DescendantsAndSelf("comp").FirstOrDefault();
string txJu = compElement?.Attribute("txJu")?.Value;
string ddate = xdoc.Root?.Attribute("ddate")?.Value;
string value = ddate;

使用DescendantsAndSelf方法获取筛选comp元素的集合,并首先使用它们。直接在元素中访问ddate属性Root。使用null-conditional operator?避免可能的空引用异常

最新更新