1

我从外部源获取 fetchXml,我需要在其中插入一个属性。此刻,我正在通过将肯定存在于其中的属性与我要添加的属性一起替换来进行问答。

String fetchy = ...;
String surely = "<attribute name=\"entity_uno_id\" />";
String addity = "<attribute name=\"entity_duo_id\" />";
return fetchy.Replace(surely, surely + addity);

这很丑陋,也不专业。我可以以更安全的方式重新设计它吗?我无法控制提供给我的 fetchXml。

4

2 回答 2

0

尝试这样的事情

 string xmlString = ... // the whole xml string;
    var xml = XElement.Parse(xmlString);
    var xElement = new XElement(XName.Get("attribute", null));
    xElement.SetAttributeValue(XName.Get("name", null), "entity_duo_id");
    xml.Add(xElement);
于 2013-03-19T09:17:35.430 回答
0

如果您可以控制接收的 fetchXml,请让他们将其格式化为 String.Format 就绪类型的格式。例如,如果您当前的字符串如下所示:

var xml = "<blah><attribute name='entity_uno_id' /></blah>"

将其更改为:

var xml = "<blah><attribute name='entity_uno_id' />{0}</blah>"

然后你可以像这样添加任何你想要的:

String fetchy = ...;
String addity = "<attribute name='entity_duo_id' />";
return String.Format(fetchy, addity);

编辑 1

假设您仍然可以控制给出的 fetch xml 以包含{0}在 xml 的正确位置,则此扩展方法将起作用:

public static string AddAttributes(this string fetchXml, params string[] attributeNames)
{
    return String.Format(fetchXml, String.Join(String.Empty, attributeNames.Select(a => "<attribute name='" + a + "' />")));
}
于 2013-03-19T13:37:28.990 回答