gpt4 book ai didi

c# - 查找没有根元素的节点值

转载 作者:行者123 更新时间:2023-11-30 22:55:42 25 4
gpt4 key购买 nike

这是我在 sql 中的列值:

<ProductId>101</ProductId>
<ProductName>TShirt</ProductName>
<Description>UCB</Description>
<Category>199</Category>
<Weight>150</Weight>
<Price>2500</Price>
<images></images>

有时它看起来也像这样:

<ProductId xsi:nil="true" ></ProductId> 
<ProductName>Toys</ProductName>
<Description xsi:nil="true" ></Description>
<Category xsi:nil="true" ></Category>
<Weight xsi:nil="true" ></Weight>
<Price xsi:nil="true" ></Price>
<images></images>

我想从此列中提取“ProductName”值,即 TShirt。它可以是任何节点,我该怎么做?

这是我的c#代码

var xml = XElement.Parse(xmlString);

string fieldValue = xml.Element(fieldToSearch).ToString();

但是因为它不是正确的 xml 字符串,所以它给出了错误,所以我明确地写了

string xmlString = "<root>" + columnValue + "</root>";

找到节点值的正确方法是什么?

编辑:可以提取重量/描述/价格的值,任何节点。当找到 xsi:nil 时出现错误。

最佳答案

你得到一个错误,因为 xsi:nil属性的 namespace 前缀为 xsi .由于缺少父元素,因此没有此前缀的声明。

理想情况下,您会修复此问题的来源,以便存储格式良好的 XML 而不是一堆子元素,但如果您坚持使用它,那么解决该问题的最简单方法是添加命名空间向你的假人声明root元素:

var xmlString = 
"<root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" +
columnValue +
"</root>";

其次,我会注意到 ToString()将返回元素本身,例如<ProductName>Toys</ProductName> .如果你只想要值,那么你可以使用显式转换:

var fieldValue = (string) xml.Element(fieldToSearch);

参见 this fiddle用于工作演示。

关于c# - 查找没有根元素的节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55063102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com