标签: xelement

获得XElement的InnerXml的最佳方法是什么?

body在下面的代码中获取混合元素内容的最佳方法是什么?该元素可能包含XHTML或文本,但我只想要其字符串形式的内容.该XmlElement类型具有InnerXml我正在追求的属性.

编写的代码几乎可以实现我想要的功能,但包含了我不想要的周围的<body>... </body>元素.

XDocument doc = XDocument.Load(new StreamReader(s));
var templates = from t in doc.Descendants("template")
                where t.Attribute("name").Value == templateName
                select new
                {
                   Subject = t.Element("subject").Value,
                   Body = t.Element("body").ToString()
                };
Run Code Online (Sandbox Code Playgroud)

.net xml xelement innerxml

144
推荐指数
6
解决办法
8万
查看次数

如何在XElement或LINQ中使用XPath?

考虑以下XML:

<response>
  <status_code>200</status_code>
  <status_txt>OK</status_txt>
  <data>
    <url>http://bit.ly/b47LVi</url>
    <hash>b47LVi</hash>
    <global_hash>9EJa3m</global_hash>
    <long_url>http://www.tumblr.com/docs/en/api#api_write</long_url>
    <new_hash>0</new_hash>
  </data>
</response>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种非常简短的方法来获得<hash>元素的价值.我试过了:

var hash = xml.Element("hash").Value;
Run Code Online (Sandbox Code Playgroud)

但那不起作用.是否可以提供XPath查询XElement?我可以使用旧System.Xml框架来执行此操作,执行以下操作:

xml.Node("/response/data/hash").Value
Run Code Online (Sandbox Code Playgroud)

在LINQ命名空间中是否有这样的东西?


更新:

在对此进行了一些讨论之后,我找到了一种方法来做我正在尝试做的事情:

var hash = xml.Descendants("hash").FirstOrDefault().Value;
Run Code Online (Sandbox Code Playgroud)

我仍然有兴趣看看是否有人有更好的解决方案?

.net xml xelement xpath linq-to-xml

76
推荐指数
4
解决办法
6万
查看次数

XElement的孩子

我如何才能获得XElement的孩子?

我目前正在使用XElement.Descendants()函数,它返回所有级别的XElements,而不仅仅是子节点.

我真正想要的只是孩子们的IEnumerable.

c# xml xelement linq-to-xml

63
推荐指数
2
解决办法
5万
查看次数

获取XPath到XElement?

我在文档中有一个XElement.给定XElement(和XDocument?),是否有一个扩展方法来获取其完整(即绝对,例如/root/item/element/child)XPath?

例如myXElement.GetXPath()?

编辑:好的,看起来我忽略了一些非常重要的事情.哎呦!需要考虑元素的索引.请参阅我对修正后的解决方案的最后答案.

c# xml xelement xpath

42
推荐指数
3
解决办法
3万
查看次数

XElement =>在运行时添加子节点

所以让我们假设这是我想要实现的:

<root>
  <name>AAAA</name>
  <last>BBBB</last>
  <children>
     <child>
        <name>XXX</name>
        <last>TTT</last>
     </child>
     <child>
        <name>OOO</name>
        <last>PPP</last>
     </child>
   </children>
</root>
Run Code Online (Sandbox Code Playgroud)

不确定使用XElement是否是最简单的方法,
但这是我到目前为止所做的:

 XElement x = new XElement("root",
                  new XElement("name", "AAA"),
                  new XElement("last", "BBB"));
Run Code Online (Sandbox Code Playgroud)

现在我必须根据我的一些数据添加"孩子".
可能有1,2,3,4 ......

所以我需要通过我的列表进行迭代以获得每个孩子

foreach (Children c in family)
{
    x.Add(new XElement("child", 
              new XElement("name", "XXX"),
              new XElement("last", "TTT")); 
} 
Run Code Online (Sandbox Code Playgroud)

问题:

这样我就会错过"CHILDREN Parent节点".如果我只是在foreach之前添加它,它将被渲染为一个封闭的节点

<children/>
Run Code Online (Sandbox Code Playgroud)

这不是我们想要的.

题:

如何将第一部分添加到父节点并添加到我的列表中?

c# xml xelement linq-to-xml

34
推荐指数
3
解决办法
5万
查看次数

如何从字符串转换为XElement对象

我有一个像这样的字符串: "<Root><Child>Hey</Child></Root>"

如何将其转换为XElement对象?

c# xml xelement

33
推荐指数
1
解决办法
3万
查看次数

获取xelement属性值

我有一个看起来像这样的XElement:

<User ID="11" Name="Juan Diaz" LoginName="DN1\jdiaz" xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/" />
Run Code Online (Sandbox Code Playgroud)

如何使用XML提取LoginName属性的值?我尝试了以下,但q2"枚举没有产生任何结果".

var q2 = from node in el.Descendants("User")
    let loginName = node.Attribute(ns + "LoginName")
    select new { LoginName = (loginName != null) };
foreach (var node in q2)
{
    Console.WriteLine("LoginName={0}", node.LoginName);
}
Run Code Online (Sandbox Code Playgroud)

c# xml xelement linq-to-xml

29
推荐指数
1
解决办法
6万
查看次数

如何获取XElement的值而不是所有子节点的值?

示例xml:

<parent>
<child>test1</child>
<child>test2</child>
</parent>
Run Code Online (Sandbox Code Playgroud)

如果我查找parent.Value,其中parent是XElement,我得到"test1test2".我期待的是"".(因为没有文字/值.

我应该寻找XElement的哪些属性?

c# xelement

25
推荐指数
3
解决办法
2万
查看次数

在foreach循环中删除XElements

所以,我有一个要删除的bug

foreach (XElement x in items.Elements("x")) 
{
    XElement result = webservice.method(x);

    if (/*condition based on values in result*/) 
    {
        x.Remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是调用x.Remove()会改变foreach,如果有两个元素("x"),并且第一个被删除,则循环不会到达第二个x元素.

那我该如何循环呢?或者是否应该以另一种方式重写?

.net foreach xelement c#-3.0

23
推荐指数
1
解决办法
1万
查看次数

将XElement转换为XmlNode

我知道没有直接的方法,但仍然..我们可以将XElement元素转换为XmlNode.类似的选项InnerText,并InnerXmlXmlNode具体的.

所以,如果我想使用这些选项,可以做什么来转换 XElementXmlNode反之亦然.

c# xml linq xelement xmlnode

23
推荐指数
2
解决办法
4万
查看次数

标签 统计

xelement ×10

xml ×8

c# ×7

linq-to-xml ×4

.net ×3

xpath ×2

c#-3.0 ×1

foreach ×1

innerxml ×1

linq ×1

xmlnode ×1