c#を使用して特定のxmlタグを削除する必要がありますが、そのタグは異なる親タグに配置される可能性があります。特定のノード/タグの親ノード/タグを取得する#
だから私はその特定のタグを検索し、親タグを取得してそれを削除する必要があります。
これは私のxmlファイル
<PublisherInfo>
<PublisherName value="1">Askquestionzero Publisher</PublisherName>
<PublisherLocation>Ph</PublisherLocation>
<PublisherImprintName>Askquestionzero</PublisherImprintName>
<PublisherLogo>
<Tada>Remove this value and its content</Tada>
</PublisherLogo>
<PublisherURL>Askquestionzero.com</PublisherURL>
</PublisherInfo>
であり、これは私のコード
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:\Users\user\Desktop\askquestion.xml");
XmlNode nodeToDelete = xmlDoc.SelectSingleNode("/PublisherInfo/PublisherLogo/Tada");
if (nodeToDelete != null)
{
nodeToDelete.ParentNode.RemoveChild(nodeToDelete);
}
Console.WriteLine(xmlDoc.OuterXml);
コード作品ですが、私はその親タグを指定する必要があります。どのようにxmlファイルをループし、Tada
タグが見つかった場合は、その親タグを取得してから削除します。
予想される出力:
<PublisherInfo>
<PublisherName value="1">Askquestionzero Publisher</PublisherName>
<PublisherLocation>Ph</PublisherLocation>
<PublisherImprintName>Askquestionzero</PublisherImprintName>
<PublisherLogo>
</PublisherLogo>
<PublisherURL>Askquestionzero.com</PublisherURL>
</PublisherInfo>
別の質問:私は、xmlファイルのノードを変更することも必要
。ファイルは上記と同じです。
xmlノード/タグ名を変更するコードは次のとおりです。しかし、それはその属性を保持します。タグ名を変更してその属性を削除したいのですが上記
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"C:\Users\user\Desktop\askquestion.xml");
Console.WriteLine(xmlDocument.OuterXml);
XmlElement element = (XmlElement)xmlDocument.GetElementsByTagName("PublisherName")[0];
XmlElement renamedElement = (XmlElement)RenameNode(element, null, "new-element");
Console.WriteLine(xmlDocument.OuterXml);
public static XmlNode RenameNode(XmlNode node, string namespaceUri, string qualifiedName)
{
if (node.NodeType == XmlNodeType.Element)
{
XmlElement oldElement = (XmlElement)node;
XmlElement newElement = node.OwnerDocument.CreateElement(qualifiedName, namespaceUri);
while (oldElement.HasAttributes)
{
newElement.SetAttributeNode(oldElement.RemoveAttributeNode(oldElement.Attributes[0]));
}
while (oldElement.HasChildNodes)
{
newElement.AppendChild(oldElement.FirstChild);
}
if (oldElement.ParentNode != null)
{
oldElement.ParentNode.ReplaceChild(newElement, oldElement);
}
return newElement;
}
else
{
return null;
}
}
コードの出力:
<new-element value="1">Askquestionzero Publisher</new-element>
所望の出力:
<new-element>Askquestionzero Publisher</new-element>
?期待される出力を含めると役立ちます。 –
質問が更新されます。ありがとうございます – askquestionzero