Решение Mads Hansen хорошо, но для чтения внешнего файла в .NET 4 потребовалось некоторое время, чтобы выяснить, используя подсказки в комментариях о resolvers, ProhibitDTD и т. д.
Вот как это делается done:
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
settings.XmlResolver = resolver;
var reader = XmlReader.Create("logfile.xml", settings);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
foreach (XmlElement element in doc.SelectNodes("//event"))
{
var ch = element.ChildNodes;
var count = ch.Count;
}
logfile.xml:
<?xml version="1.0"?>
<!DOCTYPE logfile [
<!ENTITY events
SYSTEM "events.txt">
]>
<logfile>
&events;
</logfile>
events.txt:
<event>
<item1>item1</item1>
<item2>item2</item2>
</event>
Одним из грубых способов было бы получить ближайший родственник родителя / родителя с prev
$("#AddButton").click(function() {
var blockToGrab = $(this).parent().parent().prev();
// do stuff with block
console.log("I found: " + blockToGrab.html());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container-fluid">
<div class="input-page">...</div>
<!-- field 1 -->
<div class="col-md-12 col-sm-12 col-xs-12 no-padding">...</div>
<div class="col-md-12 col-sm-12 col-xs-12 no-padding">...</div>
<!-- field 2 -->
<div class="col-md-12 col-sm-12 col-xs-12 no-padding">...</div>
<div class="col-md-12 col-sm-12 col-xs-12 no-padding">...</div>
<!-- field 3 -->
<div class="col-md-12 col-sm-12 col-xs-12 no-padding"> <!-- I want to grab this block -->
<div class="x_panel">
<div class="x_content">
<form class="data-table">
<div class="row">...</div>
<div class="row">...</div>
</form>
</div>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xs-12 no-padding">
<div class="btn-group">
<button id="AddButton">Add</button> <!-- when I click this button -->
<button>Other</button>
</div>
</div>
</div>