GVKun编程网logo

如何使用DOMDocument删除元素?(从dom中删除所有元素)

26

在本文中,您将会了解到关于如何使用DOMDocument删除元素?的新资讯,同时我们还将为您解释从dom中删除所有元素的相关在本文中,我们将带你探索如何使用DOMDocument删除元素?的奥秘,分析

在本文中,您将会了解到关于如何使用DOMDocument删除元素?的新资讯,同时我们还将为您解释从dom中删除所有元素的相关在本文中,我们将带你探索如何使用DOMDocument删除元素?的奥秘,分析从dom中删除所有元素的特点,并给出一些关于c# – 当我们有多个具有相同名称但不同属性的元素时,如何使用Xdocument从xml中删除元素、document.write PHP XML操作类DOMDocument、javascript-仅使用DomDocument拉HREF、org.dom4j.dom.DOMDocument的实例源码的实用技巧。

本文目录一览:

如何使用DOMDocument删除元素?(从dom中删除所有元素)

如何使用DOMDocument删除元素?(从dom中删除所有元素)

是否可以从加载中删除元素DOM而不创建新元素?例如这样的事情:

$dom = new DOMDocument(''1.0'', ''utf-8'');$dom->loadHTML($html);foreach($dom->getElementsByTagName(''a'') as $href)    if($href->nodeValue == ''First'')        //delete

答案1

小编典典

通过告诉父节点删除子节点来删除该节点:

$href->parentNode->removeChild($href);

请参阅DOMNode::$parentNode文档
DOMNode::removeChild() 文档

c# – 当我们有多个具有相同名称但不同属性的元素时,如何使用Xdocument从xml中删除元素

c# – 当我们有多个具有相同名称但不同属性的元素时,如何使用Xdocument从xml中删除元素

我有一个xml文档,如下所示:
<Applications>
  <myApp>
    <add key="ErrorDestinationEventLog" value="EventLog" />
    <add key="version" value="5.0.0.0" />
    <add key="DebugMode_RUN" value="true" />
  </myApp>
</Applications>

所有元素具有相同的元素名称但不同的属性.
如何删除一个特定的元素,它的属性从这个xml使用XDocument在C#中?

xd.Element("Applications").Element("myApp").Element(xe.Name).RemoveAll();

上述命令不起作用,因为所有元素都具有相同的名称.

有没有办法识别一个元素,除了它的名字?
如果是这样,我该如何使用它从XDocument中删除它?

解决方法

string key = "version";
XDocument xdoc = XDocument.Load(path_to_xml);
xdoc.Descendants("add")
    .Where(x => (string)x.Attribute("key") == key)
    .Remove();

更新你几乎做了这份工作.你错过的是按属性值过滤元素.您的代码包含过滤和删除所选元素:

xd.Element("Applications")
  .Element("myApp")
  .Elements("add")
  .Where(x => (string)x.Attribute("key") == key)
  .Remove();

document.write PHP XML操作类DOMDocument

document.write PHP XML操作类DOMDocument

javascript-仅使用DomDocument拉HREF

javascript-仅使用DomDocument拉HREF

我想从以下html输出中提取HREF

<div>
    <p>
        <ahttps://www.jb51.cc/tag/odo/" target="_blank">odo-TAG-TAB" href="/course?courseId=1.2&amp;date=20150713">
            Ayr
        </a> | SOFT
    </p>
    <ul>
        <lititle="7f 50yds Maiden Stakes | 10 runners">
            <ahttps://www.jb51.cc/tag/odo/" target="_blank">odo-TAG-TAB" href="/raceresult?raceId=1.2.1150713.1">
                09:00
            </a>
        </li>
        <lititle="1m Handicap | 5 runners">
            <ahttps://www.jb51.cc/tag/odo/" target="_blank">odo-TAG-TAB" href="/raceresult?raceId=1.2.1150713.2">
                09:30
            </a>
        </li>
        <lititle="1m2f Handicap | 6 runners">
            <ahttps://www.jb51.cc/tag/odo/" target="_blank">odo-TAG-TAB" href="/raceresult?raceId=1.2.1150713.3">
                10:00
            </a>
        </li>

但是我只需要href属性(如果调用包含单词“ race”),例如它将拉该href

<ahttps://www.jb51.cc/tag/odo/" target="_blank">odo-TAG-TAB" href="/raceresult?raceId=1.2.1150713.1">

我已经尝试过自己,但是似乎无法使用getAttribute(‘href’)拉href并得到错误“在非对象上调用成员函数item()”

解决方法:

我想这就是你要找的

$dom = new DomDocument;
$dom->loadHtml($html);
$tagList = $dom->getElementsByTagName('a');
foreach ($tagList as $tag) {
    // Simple string check, but beware using strstr and utf-8
    if(strstr($tag->getAttribute('class'), 'race')) {
        echo $tag->getAttribute('href');
    }
}

或者您可以使用SimpleXML

$dom = new DomDocument;
$dom->loadHtml($html);
$xml = simplexml_import_dom($dom);
$tagList = $xml->xpath("//a[contains(@class,'race')]");
foreach ($tagList as $tag) {
    var_dump($tag->attributes()['href']);
}

org.dom4j.dom.DOMDocument的实例源码

org.dom4j.dom.DOMDocument的实例源码

项目:bisis-v4    文件:MessageUtil.java   
public static Document messageSetup(String rootElement,String namespace,String schemaURL,String actionName,Element content) {
        Namespace nmsp=DOMNamespace.get("xsi",namespace);
        Document newDoc=new DOMDocument();
        Element resp=new DOMElement(rootElement);
Element action=new DOMElement("action");
action.addAttribute("name",actionName);
action.add(content);

resp.addAttribute("xsi:noNamespaceSchemaLocation",schemaURL);
resp.add(nmsp);
      resp.add(action);
newDoc.setRootElement(resp);

   return newDoc;
 }
项目:netarchivesuite-svngit-migration    文件:SimpleXml.java   
/** Create a new SimpleXml just containing the root element.
 *
 * @param rootElement Name of the root element
 */
public SimpleXml(String rootElement) {
    ArgumentNotValid.checkNotNullOrEmpty(rootElement,"String rootElement");
    xmlDoc = new DOMDocument();
    xmlDoc.addElement(rootElement);
    source = "Newly creating XML file with root '" + rootElement + "'";
}
项目:ph-commons    文件:DOM4JFuncTest.java   
@Test
public void testMisc ()
{
  final Document aXML = new DOMDocument ();
  final Element aRoot = aXML.createElement ("rootElement");
  assertNotNull (XMLWriter.getNodeAsstring (aRoot));
}
项目:ph-commons    文件:DOM4JFuncTest.java   
@Test
public void testMisc2 ()
{
  final DOMDocument aXML = new DOMDocument ();
  final Node aChild = aXML.appendChild (new DOMElement ("rootElement",new DOMNamespace ("xyz","http://www.example.org")));
  aChild.appendChild (new DOMText ("anyText"));
  aChild.appendChild (new DOMEntityReference ("abc"));

  assertNotNull (XMLWriter.getNodeAsstring (aXML));
}
项目:gocd    文件:StageXmlviewmodel.java   
public Document toXml(XmlWriterContext writerContext) {
    DOMElement root = new DOMElement("stage");
    root.addAttribute("name",stage.getName()).addAttribute("counter",String.valueOf(stage.getCounter()));
    Document document = new DOMDocument(root);
    root.addElement("link").addAttribute("rel","self").addAttribute("href",httpUrl(writerContext.getBaseUrl()));

    StageIdentifier stageId = stage.getIdentifier();
    root.addElement("id").addCDATA(stageId.asURN());
    String pipelineName = stageId.getPipelineName();
    root.addElement("pipeline").addAttribute("name",pipelineName)
            .addAttribute("counter",String.valueOf(stageId.getPipelineCounter()))
            .addAttribute("label",stageId.getPipelineLabel())
    .addAttribute("href",writerContext.getBaseUrl() + "/api/pipelines/" + pipelineName + "/" + stage.getPipelineId() + ".xml");

    root.addElement("updated").addText(DateUtils.formatISO8601(stage.latestTransitionDate()));

    root.addElement("result").addText(stage.getResult().toString());

    root.addElement("state").addText(stage.status());

    root.addElement("approvedBy").addCDATA(stage.getApprovedBy());

    Element jobs = root.addElement("jobs");
    for (JobInstance jobInstance : stage.getJobInstances()) {
        jobs.addElement("job").addAttribute("href",writerContext.getBaseUrl() + "/api/jobs/" + jobInstance.getId() + ".xml");
    }

    return document;
}
项目:gocd    文件:PipelineXmlviewmodel.java   
public Document toXml(XmlWriterContext writerContext) throws DocumentException,IOException {
    DOMElement root = new DOMElement("pipeline");
    root.addAttribute("name",pipeline.getName()).addAttribute("counter",String.valueOf(pipeline.getCounter())).addAttribute("label",pipeline.getLabel());
    Document document = new DOMDocument(root);
    String baseUrl = writerContext.getBaseUrl();
    root.addElement("link").addAttribute("rel",httpUrl(baseUrl));

    root.addElement("id").addCDATA(pipeline.getPipelineIdentifier().asURN());
    PipelineTimelineEntry pipelineAfter = pipeline.getPipelineAfter();
    if (pipelineAfter != null) {
        addTimelineLink(root,baseUrl,"insertedBefore",pipelineAfter);
    }
    PipelineTimelineEntry pipelineBefore = pipeline.getPipelineBefore();
    if (pipelineBefore != null) {
        addTimelineLink(root,"insertedAfter",pipelineBefore);
    }

    root.addElement("scheduleTime").addText(DateUtils.formatISO8601(pipeline.getScheduledDate()));

    Element materials = root.addElement("materials");

    for (MaterialRevision materialRevision : pipeline.getCurrentRevisions()) {
        populateXml(materials,materialRevision,writerContext);

    }

    Element stages = root.addElement("stages");
    for (StageInstanceModel stage : pipeline.getStageHistory()) {
        if (! (stage instanceof NullStageHistoryItem)) {
            stages.addElement("stage").addAttribute("href",StageXmlviewmodel.httpUrlFor(writerContext.getBaseUrl(),stage.getId()));
        }
    }

    root.addElement("approvedBy").addCDATA(pipeline.getApprovedBy());
    return document;
}
项目:gocd    文件:JobPlanXmlviewmodel.java   
public Document toXml(XmlWriterContext writerContext) throws DocumentException,IOException {
    DOMElement root = new DOMElement("scheduledJobs");
    for (WaitingJobPlan jobPlan : jobPlans) {
        DOMElement jobElement = getXmlForJobPlan(writerContext,jobPlan);
        root.add(jobElement);
    }
    DOMDocument domDocument = new DOMDocument(root);
    return domDocument;
}
项目:gocd    文件:JobXmlviewmodel.java   
public Document toXml(XmlWriterContext writerContext) throws DocumentException,IOException {
    DOMElement root = new DOMElement("job");
    root.addAttribute("name",jobInstance.getName());
    Document document = new DOMDocument(root);
    root.addElement("link").addAttribute("rel",httpUrl(writerContext.getBaseUrl()));

    JobIdentifier identifier = jobInstance.getIdentifier();
    root.addElement("id").addCDATA(identifier.asURN());
    String pipelineName = identifier.getPipelineName();
    StageIdentifier stageId = identifier.getStageIdentifier();

    root.addElement("pipeline").addAttribute("name",stageId.getPipelineLabel());

    root.addElement("stage").addAttribute("name",stageId.getStageName()).addAttribute("counter",stageId.getStageCounter()).addAttribute("href",StageXmlviewmodel.httpUrlFor(
            writerContext.getBaseUrl(),jobInstance.getStageId()));

    root.addElement("result").addText(jobInstance.getResult().toString());

    root.addElement("state").addText(jobInstance.getState().toString());

    Element properties = root.addElement("properties");

    for (Property property : writerContext.propertiesForJob(jobInstance.getId())) {
        properties.addElement("property").addAttribute("name",property.getKey()).addCDATA(property.getValue());
    }

    root.addElement("agent").addAttribute("uuid",jobInstance.getAgentUuid());

    root.addComment("artifacts of type `file` will not be shown. See https://github.com/gocd/gocd/pull/2875");
    Element artifacts = root.addElement("artifacts");
    artifacts.addAttribute("baseUri",writerContext.artifactBaseUrl(identifier)).addAttribute("pathFromArtifactRoot",writerContext.artifactRootPath(identifier));

    JobPlan jobPlan = writerContext.planFor(identifier);
    for (ArtifactPlan artifactPlan : jobPlan.getArtifactPlansOfType(ArtifactType.unit)) {
        artifacts.addElement("artifact").addAttribute("src",artifactPlan.getSrc()).addAttribute("dest",artifactPlan.getDest()).addAttribute("type",artifactPlan.getArtifactType().toString());
    }

    // Retain the top level elements for backward-compatibility
    root.addComment("resources are Now intentionally left blank. See https://github.com/gocd/gocd/pull/2875");
    root.addElement("resources");
    root.addComment("environmentvariables are Now intentionally left blank. See https://github.com/gocd/gocd/pull/2875");
    root.addElement("environmentvariables");

    return document;
}
项目:windup    文件:Help.java   
public static void save(Furnace furnace) throws IOException
{
    Document doc = new DOMDocument(new DOMElement(HELP));
    Iterable<Configurationoption> windupOptions = WindupConfiguration.getwindupConfigurationoptions(furnace);
    for (Configurationoption option : windupOptions)
    {
        Element optionElement = new DOMElement(OPTION);
        optionElement.addAttribute(NAME,option.getName());

        Element descriptionElement = new DOMElement(DESCRIPTION);
        descriptionElement.setText(option.getDescription());
        optionElement.add(descriptionElement);

        // Type
        Element typeElement = new DOMElement(TYPE);
        typeElement.setText(option.getType().getSimpleName());
        optionElement.add(typeElement);

        // UI Type
        Element uiTypeElement = new DOMElement(UI_TYPE);
        uiTypeElement.setText(option.getUIType().name());
        optionElement.add(uiTypeElement);

        // Available Options
        Element availableOptionsElement = new DOMElement(AVAILABLE_OPTIONS);
        for (Object availableValueObject : option.getAvailableValues())
        {
            if (availableValueObject == null)
                continue;

            Element availableOption = new DOMElement(AVAILABLE_OPTION);
            availableOption.setText(String.valueOf(availableValueObject));
            availableOptionsElement.add(availableOption);
        }
        if (!availableOptionsElement.elements().isEmpty())
            optionElement.add(availableOptionsElement);

        // Is it required?
        Element required = new DOMElement(required);
        required.setText(Boolean.toString(option.isrequired()));
        optionElement.add(required);

        doc.getRootElement().add(optionElement);
    }

    try (FileWriter writer = new FileWriter(getDefaultFile()))
    {
        doc.write(writer);
    }
}

今天关于如何使用DOMDocument删除元素?从dom中删除所有元素的讲解已经结束,谢谢您的阅读,如果想了解更多关于c# – 当我们有多个具有相同名称但不同属性的元素时,如何使用Xdocument从xml中删除元素、document.write PHP XML操作类DOMDocument、javascript-仅使用DomDocument拉HREF、org.dom4j.dom.DOMDocument的实例源码的相关知识,请在本站搜索。

本文标签: