我从外部源获取fetchXml,我需要在其中插入一个属性。在这一刻,我正在做一个Q& D,将一个肯定存在于那里的属性与我想要添加的属性一起替换。
String fetchy = ...;
String surely = "<attribute name=\"entity_uno_id\" />";
String addity = "<attribute name=\"entity_duo_id\" />";
return fetchy.Replace(surely, surely + addity);
这很难看,也不专业。我能以更安全的方式重新设计吗?我无法控制向我提供的fetchXml。
答案 0 :(得分: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);
答案 1 :(得分: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);
假设您仍然可以控制给定的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 + "' />")));
}